- モリヤ
総記事本数:11
こんにちは
開発部のモリヤです。
先日、以下のような仕様のページを作成する際に動的に<title>を変更する必要があったため、手法をご紹介します。
URLクエリパラメータをkeyとして、出力内容をテーブルから取得・表示内容を切り替える。
ページのタイトルは、固定ページのタイトルではなく取得データのタイトル情報にする。
動作環境は「WP 5.2.2」で、使用テーマは標準の「twentynineteen」
特に手を加えず、該当ページを開いたところ、タイトルは固定ページのタイトルが表示されています。
タイトル部分の出力方法を知るため、テーマ内にある「header.php」を確認、以下の記述となっていました。
調べてみたところ<title>は、WordPress4.4より前は「wp_title()」という処理を使って出力していたようですが、4.4以降は非推奨となり、現在はfunction.php内に「add_theme_support( ‘title-tag’ );」を記述することで、wp_head()で自動的にタイトルが出力される仕組みとなっているようです。
※実際のところ「非推奨」は取り下げて 当分の間復活されたようですが、いつまた使えなくなるかわからないので使わないほうが良い気がします。。。
>> 【WordPress】wp_titleは非推奨!titleタグにタイトルを出力する方法
functions.phpに以下を記述することでページタイプごとにタイトルを切り替えることが可能なようです。
固定ページのパーマリンクを「shop_list」とし、固定ページであるか判定する「is_page()」を組み合わせて判定することで特定の固定ページのタイトルを変更することが可能となりました。
ここから更に、動的にタイトルを変更するために固定ページ側とfunction.php側に「global $page_title;」を定義し、wp_head()実行前にページタイトルを設定、function.php側で変数を指定することで設定したタイトルが表示されるようになりました。
固定ページ以外でも「is_category()」や「is_tag()」を使うことで判定・タイトル変更が可能となります。
タイトル以外のメタタグなどの変更もしたかった場合には、
「固定ページ編集」>「ページ属性」>「テンプレート」
テンプレートを自分で任意に作成し割り当てしてから、そのテンプレート内のget_header(ファイル名指定)で細かく設定する方法もあります。
自由度が高いですが、ヘッダー部分に影響するプラグインのアップデートがされないというデメリットもあります。
匿名さん
> テンプレートを自分で任意に作成し割り当てしてから、そのテンプレート内のget_header(ファイル名指定)で細かく設定する方法もあります。
コメントありがとうございます。
タイトル以外も細かく分けたい場合、その手法のほうが楽に管理できそうですね!
コメントをどうぞ