キーワードに追加したタグを表示させたい。という要望です。
もともとACFの関連(relationship)を使用した時にタイトルに表示させたいというのでタグを触ったのですが、何気に使い回しそうなので備忘録として残したいと思います。
ACFの関連をタイトルタグ内に追加する
カスタムフィールドを簡単に追加できるACF(Advanced Custom Fields)が無償な上便利でついつい頼ってしまいます。代替品も考えた方がいいと思いつつ有償版にしかないrepeaterとかも使いやすいんですよねぇ・・・
カスタム投稿とカスタムフィールドを駆使して、関連性のある記事を投稿に呼び出したりできるのでかなり便利。
メディアやレビュー関係のサイトでレビュワーなどの情報をカスタム投稿で管理をし、投稿で呼び出すと著者の情報に変更があっても、一括で修正されるという仕組みです。
タイトルにレビュワー情報を出したい場合、metaのcontentの中に直接タグを入れ込むのはあまりにも管理がしにくくなったりするので下記の方法を利用しています。
尚下記の方法は投稿のカテゴリにACFの関連を指定した場合になります。
<title>タイトル|レビュワー名|カテゴリ名|ブログ名</title>としたい。
下記のように変数に格納しておくと、再利用しやすくて便利です。
テンプレートとして作っておいて呼び出すと更に管理しやすいかもしれないです。
hogehogeの部分は自由にわかりやすい名前に書き換えます。
//ブログ名
$site_name = get_bloginfo('name');
//記事タイトル
$post_title = get_the_title();
//カテゴリID取得
$cat_id = get_the_category()[0]->cat_ID;
$cat_name = get_the_category()[0]->cat_name;
//カテゴリに指定した関連(relationship)
$hogehoge = "";
$count = 0;
$hogehoge_cat = 'category_'.$cat_id;
$hogehoge_field = get_field('ここにフィールド名',$hogehoge_cat);
if($hogehoge_field){
foreach($hogehoge_field as $value) {
if($count == 0){
$hogehoge .= $value->post_title;
} else {
$hogehoge .= "," . $value->post_title;
}
$count++;
}
}
$title = $post_title .' | ' . $hogehoge .' | ' . $cat_name .' | ' $site_name
タイトルタグに出力する際は下記の通りです。
<title><?php echo esc_attr($title)?></title>
だいぶスッキリしました。おそらく表示されるはず・・・(覚書なので)
メタタグのkeywordにタグ一覧を追加する
ACFとほぼ同様です。ただ、記事内に設定したタグを呼び出すだけなのでもう少しシンプルかもしれませんが・・・
$hogehoge = "";
$count = 0;
$post_tags = get_the_tags();
if($post_tags){
foreach($post_tags as $value) {
if($count == 0){
$hogehoge .= $value->name;
} else {
$hogehoge .= "," . $value->name;
}
$count++;
}
}
キーワードに呼び出す際は下記の通りです。
<meta name="keywords" content="<?php echo esc_attr($hogehoge)?>">
基本的に変わりません。カテゴリに固定した情報を呼び出したりしないだけ、シンプルになります。
また、get_fieldの部分がget_the_tagsになっただけかと。
ここの部分をカテゴリにしたりするとカテゴリ一覧を呼び出したりできるので便利っちゃいえば便利です。
上記二つを組み合わせると結構いいパターンができそうなので、今後も忘れないようにしたいところです。
コメント