Simplicityでは投稿ページでSEO設定を登録できて、そこでメタキーワードを設定することができます。

Simplicityの投稿・固定ページにある「SEO設定」の設定方法
Simplicity2.3.4から投稿・固定ページにある「SEO設定」項目が増えました。この機会に、以下で「SEO設定」ボックスの入力方法を紹介しておきたいと思います。SEO設定ボックスとは「SEO設定」ボックスとは、投稿ページや固定ページ
SEOにメタキーワド不要論もある中、ここに力を入れるのもどうかと思いましたが、Simplicityでこういう設定ができる状態で放置するのもなぁ、と。
でもいちいち投稿記事にメタキーワードを入力するのもめんどくさいから、何もしなくても自動的に入るようにしよう、と思ってやったのが今回の内容です。
当サイトでは取り入れてないですが、他のとあるサイトをカスタムしている時、そこでカスタムタクソノミーを使っていて、タームがキーワードに良さそうだったのでそれを拾うようにしました。
子テーマを使用しているので、もともと親テーマにあった get_the_keywores という関数を書き換えている形です。
/* --------------------------------------------------
// メタキーワード編集
-------------------------------------------------- */
//投稿・固定ページのメタキーワードの取得
if ( !function_exists( 'get_the_keywores' ) ):
function get_the_keywores(){
global $post;
$arr_trim_key = array();
$meta_keywords = get_meta_keywords_singular_page();//投稿画面で登録するSEO設定のメタキーワード
if ( $meta_keywords && ! is_wp_error( $meta_keywords ) ){
$arr_keywords = explode( ',', $meta_keywords );//配列に格納
foreach ( $arr_keywords as $keyword ) {
if( !in_array( $keyword, $arr_trim_key ) ){
$arr_trim_key[] = trim( $keyword );//スペース除去
}
}
}
// カスタムタクソノミー「アイテムキーワード(itemkey)」のタームを取得
$terms = get_the_terms( $post->ID, 'itemkey' );
if ( $terms && ! is_wp_error( $terms ) ){
foreach ( $terms as $term ) {
if( !in_array( $term->name, $arr_trim_key ) ){//重複チェック
$arr_trim_key[] = $term->name;//配列に格納
}
}
}
$keywords = join( ",", $arr_trim_key );
// キーワードがない時に共通キーワードを入れる
if( empty($keywords) ){
$keywords = 'キーワード,サンプル';
}
/* //カテゴリーを入れることもできる
if (!$keywords) {
$categories = get_the_category($post->ID);
$category_names = array();
foreach($categories as $category):
array_push( $category_names, $category -> cat_name);
endforeach ;
$keywords = implode($category_names, ',');
}
*/
return $keywords;
}
endif;
流れとしてはSEO設定のメタキーワードを一旦配列に格納、さらにカスタムタクソノミー(上記では「itemkey」というスラッグ)のタームを取得して、先に格納していたメタキーワードと重複しなければ更に配列に追加で格納、最終的に何もキーワードがない場合は強制的に共通キーワードを入れるようにしました。
重複を少しでも厳密にするため、途中、キーワード前後のスペースを取り除く処理(trim)も入れました。
もともと親テーマのfunctions.phpにあった関数ではSEO設定のメタキーワードが入ってなかったらカテゴリーをキーワードとして登録するという処理だったのですが、私の場合、カテゴリーを利用していなかったためコメントアウトしてます。
