icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

WPヘッダーにカノニカルURL・description・OGアイキャッチ出力・プラグイン無し自力SEO【WP別ディレクトリでサイト使い回し】

更新: 2024/10/10 2524文字

WPヘッダーにカノニカルURL・description・OGアイキャッチ出力

今回は、前回行った【WP別ディレクトリでサイト使い回し】の続きです。記事やタイトルは別ディレクトリから取れるようにしましたが、機能的にはまだ不十分です。今回は『ヘッダーに出力するSEO関連情報』を中心にみていきましょう。WordPressのプラグインを使わない出力なので、処理を軽くするヒントにもなります。

前回までの対応と、今回行う対応・前提について

(*前回の記事はこちら) 別ディレクトリでの記事の管理・表示を、1つのWordPressを使いまわして対応する方法(プラグイン無しカスタム投稿・wp-blog-header.php)
/7224/how-to-manage-anothersite-with-one-wordpress/

今回は、見栄えというより、ヘッダー内に出力される情報『description・カノニカルURL・OGにアイキャッチ』をとりあげます。特に検索エンジンやSNS表示の際、設定しておくと良い情報です。プラグインなしで、こちらのサイト上で設定してみたいと思います。

なお前提として、『表示用ファイルは一つで、パラメーターID指定して記事や情報取得』という形に変更してあります。

今回のプログラム

まだ変更する可能性がありますが、こんな感じで表示用のファイルを作っていました。wp-blog-header.phpの取得などは前回同様です。 一番最初の『 header(“Cache-Control: no-cache”)』は、サーバーの高速モードにキャッシュを使っており、すぐ反映を確認したかったのでキャッシュを切っています。

そのほか『表示用ファイルは1つで、パラメーターで内容を切り替える』という形がラクそうだったので『$_GETでパラメーター取得して、idを切り替え、それぞれの記事取得』という形にしました。 昔は『googleのクローラーに対して、パラメーターurlだとうまく拾ってもらえない』というのがありました。最近では性能があがって、パラメーターurlも拾える状況になっているそうです。

meta descriptionを出力(抜粋・post_excerptフィールドを抜く)

前回、カスタム投稿タイプに抜粋機能をつけておいたので、これは割とラクでした。WPのデータベース上では『post_excerpt』という名前のフィールドに入るので、ここを抜いて、変数$descriptionに格納。meta descriptionの中に出力します。

アイキャッチを指定して、meta property=”og:image”に画像アドレスを出力する

WordPressシステムなら『アイキャッチを指定してidに紐づけし、それを取得すればいいじゃん』と思いましたが、該当記事がカスタム投稿タイプなので、設定されていませんでした。そこでカスタム投稿タイプ登録ファンクションに『アイキャッチ』を追加します。arrayが入れ子でややこしいのでご注意ください。

これで、新規追加したカスタム投稿タイプにも、アイキャッチを設定できるようになります。

あとは、『wp_get_attachment_url(get_post_thumbnail_id($id));』を使って、変数$thumb に格納。『meta property=”og:image” content=”〇〇”』内で出力します。

スラッグをデータベースから抜いて、カノニカルurlに使う

せっかく指定したので、『スラッグ』を、カノニカルurlに使ってみたいと思います。パラメーターでページを切り替えるタイプだと、urlはこんな感じになるでしょう。スラッグのフィールド名は『post_name』です。ここをデータベースから抜きます。

『$slug = $post_data->post_name;』で変数$slugに格納。 カノニカルurlタグ(link rel=”canonical”)の『〇〇(ドメイン)/■■/?webpage=』の後ろに出力。

『現在のページ情報を取得』だと、変なパラメーターを入れられたとき、それがカノニカルurlとして出てしまったりするので、検索エンジン最適化上もよくないかもしれません。さらに、念のため『特定id/slug以外のパラメーターのときは表示させず転送』としてもベターです。

プラグインなしで、meta description・og:image・カノニカルurlが出力できたか確認しよう

右クリックでhtmlソースを見て、設定した情報が出力できてるか確認します。大丈夫そうですね。 OGPについてはほかにも設定項目がありますが、今回使ったものと共通の部分もあるので、『meta property=”og:title” の部分には、post_titleで取ったタイトルを入れてやる』など、1度格納した変数を使いまわすなどしてもよさそうです。

(別のテーブルに対して何回もスキャンがかかると、処理が重くなるかもしれません。)

あとがき・まとめ

  • ヘッダーのseo情報は、プラグインなしでも対応可能
  • descriptionに使える抜粋は『post_excerpt』
  • アイキャッチをog:imageにするときはwp_get_attachment_url(get_post_thumbnail_id($id))で場所取得
  • スラッグ文字列は『post_name』

まとめるとこんな形でしょうか。『別ディレクトリでWPシステム使いまわす』という内容でしたが、ヘッダーのseo情報は『どのフィールドを抜けばよいか』を押さえておくと、プラグイン無しで対応可能です。


【カテゴリ】- WordPressファンクションetc
【タグ】-

関連記事