All in One SEOで特定のカスタム投稿の記事だけcanonicalURLを差し替えたい [ functions.php ]

WordPressでAll in One SEOを使っていて、特定のカスタム投稿の記事だけcanonicalURLを差し替えたいというご依頼 [ functions.php ]

WordPressでホームページを制作して運用する時に、titleタグやmeta description、meta keywordなどのSEO上必要な設定をを行う時にとても包括的なプラグインで「All in One SEO」というものがあります。

こちらのプラグインをご利用中のクライアントから、このようなご相談をいただきました。

よくある質問を使っているのだけど、記事自体のボリュームが少なくインデックスされないから、canonical指定を一覧ページにしたいけど、毎回設定するのは大変なのでなんとかしてほしい・・

今回は、このような対応をテーマフォルダ内のfunctions.phpに記述することで対応しました。

目次

All in One SEOのカスタマイズ

add_filter( 'aioseo_canonical_url', 'no_canonical_url');
function no_canonical_url($url){
	global $wp_query;
	$postID = $wp_query->post->ID;
	if(is_singular('faq')){
		return home_url( '/faq/' );
	}else{
		return $url;
	}
}

その他のAll in One SEOのカスタマイズ

2020年末にAll in One SEO Packがメジャーアップデートされたようで、All in One SEOと名前も変わった影響で、フィルターフックにも変更が入っていました。
すべての記述に関して、今まで「aioseop_」と記述していた部分を「aioseo_」に変更する必要があります。

title のカスタマイズ

タイトルに任意のカスタムフィールドの値を入れたい場合は、下記のように記述します。
こちらは、カスタム投稿のよくある質問の全ての記事に使用するための記述方法です。

function my_aioseo_title($title) {
  global $post;
  global $post_type;
 
  if(is_singular() && $post_type == 'faq') {
    $metas = get_post_meta($post->ID);
    $title = get_the_title() . ' – ' . $metas['subtitle'][0] . ' – 川口市のこんたホームページ製作所';
  }
 
  return $title;
}
add_filter('aioseo_title', 'my_aioseo_title');

description のカスタマイズ

カスタム投稿で editor (従来の投稿画面)を使っていない場合は、自動的に description が生成されないので、以下のカスタマイズで設定して書き出しています。

function my_aioseo_description($description){
  global $post; 
  if ( get_post_type() == 'products' ) {
    $metas = get_post_meta($post->ID); 
    $description = mb_strimwidth( strip_tags( str_replace(array("\r\n", "\r", "\n"), '', $metas['charactor'][0])), 0, 120, "…", "UTF-8");
  } 
  return $description;
}
add_filter('aioseo_description', 'my_aioseo_description');

keyword のカスタマイズ

ページのスラッグをkeywordに含める場合などは、このように記述します。

function my_aioseo_keyword($keyword){
  global $post; 
  $keyword .= ',' . $post->post_name; 
  return $keyword;
}
add_filter('aioseo_keyword', 'my_aioseo_keyword');

canonical のカスタマイズ(今回行ったもの)

全ページ、アクセスしたURLで canonical を設定する場合はこの書き方で変更できます。
先述したものとは、別の書き換え内容です。

function my_aioseo_canonical_url($canonical_url){
  $canonical_url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]
  return $canonical_url;
}
add_filter('aioseo_canonical_url', 'my_aioseo_canonical_url');

全てのカスタマイズに共通すること

return hogehoge;

全てのカスタマイズにおいて、hogehogeの箇所を変更することで任意の変更方法で変更可能です。

この記事がよかったらと思ったらぜひ♪
  • URLをコピーしました!
  • URLをコピーしました!

わたしがこの記事を書きました

埼玉県川口市で、自営業や起業家のホームページ制作を行っいます。
Web制作会社に7年務めたのち独立。Web制作歴12年、2500件以上のサイト制作に携わり、WordPressサイトを得意とし「作って終わり」にしない、結果が出るサイトであることを大切にしてます。「10人いれば10通りの最適なサイトがある」という信念のもと、型にハマったサイトづくりではなく、マーケティングから考えた、その人のビジネスにとって一番最適なサイトをご提案。技術面で不安のあるWebデザイナーのシステム面のサポートも行っております。

この記事に関するご質問やご相談、コメントはこちら

コメントする

CAPTCHA


目次