ショック! WPプラグイン「All In One SEO Pack」v2.0.3が8月19日にでたけど・・・・

all-in-one-seo-pack
All in One SEO Pack

数回にわたって、WordPress SEO対策の定番であるWPプラグイン「All In One SEO Pack」(以下、aioseop)をblogに書きましたが、2013年8月19日に新しいバージョン「v2.0.3」がリリースされました。

Change Log v2.0.3

  • NEW: XML Sitemap Module – Generate an submit an XML Sitemap from All in One SEO Pack
  • Added separate title formats for author and date archives and new title formatting options for date archives
  • Added new robots meta options for NOODP and NOYDIR
  • Added robots meta default controls for NOINDEX by post type and split the control for NOINDEX of archives
  • Preview snippet dynamically updates as you type your meta title or meta description
  • Added rel prev / next meta for paginated content
  • Feature Manager dynamically saves and updates settings
  • i18n fixes, updated .pot file for translations
  • Bug fixes

– 「All In One SEO Pack Release History」より

今回のバージョンより「XML Sitemap」が作成できるようです。筆者は、WPプラグイン「Google XML Sitemaps」をよく使っているのですが、aioseopで作成してくれるなら、これに一本化できそうで嬉しいです(使い物になるか検証中)。

さっそく、「WordPress SEO対策 All in One SEO Packのdescription出力の改造」でご紹介させていただきました便利なフィルターフック ‘aioseop_description’ に影響がないか「v2.0.2」と今回の「v2.0.3」をdiffって差分を眺めてみました。

すると、あれ?w

			if ( is_category() && $this->show_page_description() )
				$description = $this->internationalize( category_description() );
			elseif ( is_tag()  && $this->show_page_description() )
				$description = $this->internationalize( tag_description() );
			elseif ( is_tax()  && $this->show_page_description() )
				$description = $this->internationalize( term_description() );
			elseif ( is_author()  && $this->show_page_description() )
				$description = $this->internationalize( get_the_author_meta( 'description' ) );
			else if ( $is_front_page )
				$description = trim( stripcslashes( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ) );
			else if ( is_single() || is_page() || is_home() || $this->is_static_posts_page() )

			$description = $this->get_aioseop_description( $post );

			/*
				if ( $this->is_static_front_page() )
					$description = trim( stripcslashes( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ) );
				elseif ( !empty( $blog_page ) )
					$description = $this->get_post_description( $blog_page );
			if ( empty( $description ) && is_object( $post ) && !is_archive() && empty( $blog_page ) )
				$description = $this->get_post_description( $post );

			$description = apply_filters( 'aioseop_description', $description );
			*/

			if ( isset($description) && ( $this->strlen($description) > $this->minimum_description_length ) && !( $is_front_page && is_paged() ) ) {
				$description = trim( strip_tags( $description ) );

フィルターフック ‘aioseop_description’コメント化されてるよぉ?

さらにソースを読むと、どうやらこのフィルターフック ‘aioseop_description’ はオミットされているわけではなく、メソッド「get_aioseop_description()」の奥底に移動されてました。厳密には、メソッド「get_aioseop_description()」に移動。

ということは、「v2.0.2」ではどんなページもフィルターフック ‘aioseop_description’で操作できた「meta description」が、「v2.0.3」では、aioseop_class.php 1105行目のとおり、固定ページ・投稿ページにしか通りません。今回のバージョンで、string関数系(substrなど)がようやくmbstring関数系に変わったので、「meta description」が空っぽ現象が直ると思いきや、まだ、不完全な部分があるようですし、まだフィルターフック ‘aioseop_description’ にお世話になりたいのに、固定ページ・投稿ページにしか効きません。

下記の選択肢となるのでしょうか。

  1. SEO的には、固定ページ・投稿ページのみでも概ねOKと思いますのでよしとする
    カテゴリページ、タグページ、日付ページなどにdescriptionが出ないだけだしw
    ※カテゴリ・タグ・タクソノミー・Authorは、WP管理画面からそれぞれのdescriptionにセットすれば出力されそうです。
  2. aioseop改造
    aioseop_class.php の1119行目あたり
    に、下記のようなコードを追加して(あんまり弄りたくないなぁ~)、独自のフィルターフック ‘aioseop_my_description’ を作っちゃう。

    $description = apply_filters( 'aioseop_my_description', $description );
    
  3. aioseop補助プラグイン を自作
    出力するHTML5全体をob_startでバッファリングして、そのバッファ内容から「meta description」を補完するような aioseop補助プラグイン を自作する。
    ※既にあるOGP関連のWPプラグインは、前から満足いかない部分があって、現在、筆者の方でOGP出力のプラグインを開発中なのですが、aioseop補助機能も実装したいと思ってます。

いろいろ悩みます。
以上、まとまりのない記事になってしまいましたが、「All In One SEO Pack」の新バージョン「v2.0.3」へアップデートされる方のご参考になりましたら幸いです。

追記.
All in One SEO Pack v2.1.1で、フィルターフック ‘aioseop_description’がどんなページでも通るようにロジックが戻ったようです。