【Simplicity】メタキーワードにカスタムタクソノミーのタームを追加する

WordPress

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設定のメタキーワードが入ってなかったらカテゴリーをキーワードとして登録するという処理だったのですが、私の場合、カテゴリーを利用していなかったためコメントアウトしてます。

 

タイトルとURLをコピーしました