AllinOneSEOPack
企業サイト作成の際にありがちな、Wordpressのテーマやプラグインのカスタマイズ例を挙げていくシリーズの第2弾。

今、うちで取りかかっている、かなり複雑なサイト構造のWordpressサイトがあるのですが、カスタム三兄弟(カスタムポストタイプ、カスタムタクソノミー、カスタムフィールド)も楽々使いこなせるデザイナーさんが壁にぶち当たっておりました。
その理由は、SEO業者さんから頂いた数十ページもあるSEO施策資料。
サイト構築も90%は仕上がっているというタイミングで、タイトルタグとパンくずのテキストにメスが入ったのです。

タイトルタグには、『All in One SEO Pack』、パンくず生成には、『Breadcrumb NavXT』という、Wordpressをお使いの方ならほぼ皆さんがご存知のはずという超有名プラグインを使用しているのですが、それらにビルトインされている複雑な設定をもってしても対応出来ない施策内容だったのです。

そこで、上記プラグインの中を覗いて対処する事になりました。
前提となるルールは、プラグインのコードはいじらない事。
そして、デザイナーさんにその後の変更にも対応してもらえるような変更方法にしておく事。

『All in One SEO Pack』の中を検索

お題となる施策内容は、『サイト内での重複タイトルはNG』。
SEO的には基本のキだと思いますが、このサイトでは、とあるタクソノミーを複数のカスタムポストで使用している為に、重複したタイトルをもつページが発生しています。

これだけの長い間、多くの人に愛されているプラグインですから、カスタマイズ出来るようなhookがあるに違いない!という読みから、まずは、プラグインのソースコード内を検索します。
『apply_filters』『do_action』辺りで検索すれば、プラグインをいじらずに外部から値の操作が出来る入口が見つかる筈!
ということで、『apply_filters』でプラグインのファイル群をテキストエディタで検索すると、なんと77個も出てきました。多過ぎです(笑)。
ここは野生の感を使って、検索結果リストを凝視すると、

return apply_filters( ‘aioseop_title’, $title );

というところを発見。これが臭い!
で、この行があるところを見ると、

function wp_title() {
        global $aioseop_options;
        $title = false;
        $post = $this->get_queried_object();
        if ( !empty( $aioseop_options[‘aiosp_rewrite_titles’] ) ) {
            $title = $this->get_aioseop_title( $post );
            $title = $this->apply_cf_fields( $title );
        }
        if ( $title === false )
            $title = $this->get_original_title();
        return apply_filters( ‘aioseop_title’, $title );
    }

ほぼ確定でしょう、これは!

hookを使ってタイトルタグのテキストを変更

確認の為に、お気に入りのプラグイン『pluginception』を使って、テストコードを書いて動作させてみましょう。
では、hook “aioseop_title”に自作の関数を引っ掛けてみます。

add_filter( ‘aioseop_title’, ‘replace_title_makertlist_add_gyo’, 10 );
function replace_title_makertlist_add_gyo( $title ){
    return $title.’☆’;
}

ちゃんと、タイトルに☆がつきました!ビンゴ!

では、本番。タイトルの頭に好きな文言を追加しましょう。
※日本語部分はダミーです。
※実際のコードはもう少し条件や表示内容が複雑ですが、やってる事を明確にする為に簡略化しています。

add_filter( ‘aioseop_title’, ‘my_replace_title’, 100 );
function my_replace_title( $title ){
    global $post;
    if( $post->post_type == ‘商品’ ){
        return ‘追加文言パターン1 | ‘. $title;
    } elseif( $post->post_type == ‘店舗’ ){
        return ‘追加文言パターン2 | ‘. $title;
    } else {
        return $title;//これ忘れるとタイトルタグが空になります。
    }
}

あとは、このコードをテーマのfunctions.phpへ移動させればOKですね。
ちょっとした変更が入っても、カスタムポストの分岐条件に合わせて文言を調整すればよいだけ。

ここまでの所要時間は、1時間弱。
これで、愛する『All in One SEO Pack』とお別れしないですむ事になりました。
めでたしめでたし。

ということで、パンくずプラグイン『Breadcrumb NavXT』の出力内容の簡単カスタマイズは、次回に!

※作成から2年前(855日経過)の記事です。内容が古い可能性があります。
東京都東日本橋の株式会社プレスマンPRESSMAN*Tech