「author.url」プロパティをWordPressのプロフィールから吐き出す方法

最近なにかと話題になっている構造化データ。
記事(Article)の構造化データにおいても、2021年8月にコンテンツの著者を特定する「author」プロパティの中で「url」の指定が推奨項目になったということで話題を集めています。

▼詳しく知りたい方はこちら

多くのサイトがE-A-Tをどう高めていくかという悩みを持つ中で、この仕様変更(更新)は見過ごせない!という人も多いのではないでしょうか。かくいう自分もその一人です。

とりあえず自分で試してみようと思い、せっかくなのでこのサイトのブログネタとして使わせてもらうことに。
noteだと検証できないので…

正直なところ、最初はテーマに直書きして済ませようと思っていました。
ですが構造化データをユーザープロフィールから吐き出せるようにすれば、複数ユーザー(執筆者)での運営のケースなど他サイトでも使いまわしが効きやすいかなと思い、試してみたという経緯です。

※プラグインやカスタムによって、共通アカウント1つの中で複数の著者を設定しているケースには向かない方法なのでご了承ください。

とりあえずプロフィール画面の項目を追加する

urlプロパティを使うにしろ、sameasプロパティを使うにしろ、まずは引っ張ってくる情報を入れる場所を作らないといけません。
既存テーマなら気を利かせて増やしてくれているパターンもありますが、プロフィール画面を見ると足りないケースも多いのではないでしょうか。

自分の場合、noteのアカウントも一応ながら持っているので、プロフィール画面に項目を追加します。

function.phpに以下のコードを追記。

======

/* プロフィール画面に項目を追加する */
function my_new_profile( $profilenewitem ) {
$profilenewitem['note'] = 'note';
$profilenewitem['YouTube'] = 'YouTube';
return $profilenewitem;
}
add_filter('user_contactmethods','my_new_profile',10,1);

======

YouTubeアカウントはないですが、とりあえず入れておきました。
2つとだけと言わず項目は増やせるので、増やしたい項目があれば
$profilenewitem['○○'] = '○○';
の部分を追加したい項目に書き換えて、
return $profilenewitem;
の上の行に貼り付ければOKです。

すると、プロフィール画面に入力項目が追加されます。

個別投稿にのみauthor.urlを含めたArticle構造化データを出力する

header.phpもしくはfooter.phpのどちらかに以下の記述を追加します。

>埋め込みコード

※普通に埋め込みたかったのですが、そうするとこの記事が構造化データテストでエラー吐いたのでポップアップでご容赦ください。

publisher内のnameやlogoのurlは固定値での運用がほとんどのはずなので、書き換えてお使いください。
これで著者のプロフィール内の情報が自動反映されるかと思います。

無事、この記事を検証ツールにかけてもエラーが出ずに認識してくれました。

注意点・改良点

テーマによって変わりそうな部分は、
$user_meta_note = get_user_meta( $author_id, 'note', true );
このオレンジの部分ですかね。

もし「あれ?出力されないんだけど?」となったらプロフィール設定画面で開発者ツール(F12)を開き、lavelタグのfor属性の値(画像赤枠の箇所)とオレンジの部分が一致しているかをご確認ください。

デフォルト状態(全項目が空欄のまま)でもエラーは起きないはずですが、残念ながらにわかコーダーの限界で「サイト名」が空欄の状態でTwitterやnoteの項目を埋めるとエラーが起きます。
そのため、このコードをもし使ってプロフィール設定に各種SNSなど他サイトのURLを入力する際は、「サイト名」にも何かしらのURLを入力するようにしましょう。

  1. サイト内の著者紹介ページのURL
  2. その著者がサイト外で運営している公式HPのURL
  3. サイト内でその著者が書いた記事の一覧ページ(自動生成されるやつ)

のいずれかを指定するのが良いかと思います。3は「どうしても」という場合で、基本的には1か2のどちらかをおすすめします。

現状のこのサイトのように複数人での運用をしていないのであれば、

  1. サイト内のプロフィールページ・会社紹介ページ
  2. サイト内のトップページ

がベターな選択肢でしょうか。