質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.74%

  • PHP

    19148questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6635questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • HTML5

    3710questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

wordpressで、titleを変更する方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 566

tsurezure1

score 8

wordpressで作成した固定ページでテンプレートのPHPを読み込ませています。
このページにはいくつかのパラメータをクエリパラメータとして渡して、パラメータによって画面表示内容を変更しています。
例:https://www.sample.com/template/?param1=aaa&param2=bbb
→"/template"のパーマリンクで固定ページ作成。param1、param2の内容により返却する画面を動的に変更。

この時、パラメータにより<head>の<title>を変更したいのですが、wordpressでは自動敵にtitleが設定されてしまいます。
処理を記載しているphpにはhtmlのhead部の記述はなく、titleの変更方法がわかりません。

phpでtitleの変更方法を教えていただけないでしょうか。

---追記---
記述不足で失礼いたしました。

wordpressのtitleの変更方法を調べたところ、function.phpで修正する方法のみがヒットしました。
私が行いたいのは、テンプレートのPHPがクエリパラメータとして受け取った値を元にtitleを変更することなので、function.phpではできないと思っています。
そこで、テンプレートのPHPで直接titleの設定をしたかったのですが、その方法が調べても出てこなかったため質問させていただきました。

また、WordPressはバージョン4.9.6で、テーマはlightningテーマを使用しており、別で子テーマも使用しています。

お知恵を貸していただけますと幸いでございます。

---5/27追記---

function.phpに以下の記述を追記しました。


function change_document_title_parts( $title_parts ){
$title_parts['title'] = 'タイトル';
$title_parts['tagline'] = 'タグライン(キャッチコピー的なもの)';
$title_parts['site'] = 'サイト名';

return $title_parts;
}

add_filter( 'document_title_parts', 'change_document_title_parts' );


期待結果としては、「タイトル - タグライン(キャッチコピー的なもの) - サイト名」とタイトルに表示されることでしたが、lightningテーマのカスタマイズから設定しているサイト名とキャッチフレーズが表示されてしまいました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/05/24 22:17

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • tsurezure1

    2018/05/25 15:53

    失礼しました。記述を追加いたしました。

    キャンセル

回答 1

checkベストアンサー

+3

【WordPress4.4以降でtitleタグをカスタマイズする方法 | Glatch(グラッチ) – 夫婦で活動するフリーランスWeb制作ユニット】
http://glatchdesign.com/blog/web/wordpress/1070

【WordPressでタイトルを変更するカスタマイズ方法(タイトル、タグライン、サイト名の設定)】
https://nelog.jp/document-title-parts

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/25 16:08

    追記について:同じです。

    キャンセル

  • 2018/05/26 21:11

    ご回答およびご教授ありがとうございます。
    固定ページのテンプレートPHPの処理で動的にタイトルを変更する場合でも、URLに記載されている方法でいけるということで承知いたしました。

    function.phpに記載した関数内で、テンプレートで使用しているPHPから値を受け取ることが可能なのかなと予測しまして、記載していただいた2つめのURLの内容をfunction.phpに記載し、とりあえずタイトルが変更されるかどうかを確認しようとしたのですが、タイトルは変更されませんでした。
    1つめのURLの方も試してみましたが、変化はありませんでした。

    WordPressはバージョン4.9.6で、テーマはlightningテーマを使用しており、別で子テーマも使用しています。
    lightningテーマ(親テーマ)のfunction.phpにはadd_theme_support( 'title-tag' );が存在することは確認しており、今回の対応で追記している内容は子テーマの方のfunction.phpに記載しています。

    何か私のした対応で間違っている箇所がありましたら教えていただけないでしょうか。

    キャンセル

  • 2018/05/27 04:56

    当該コードを質問文に追記いただけませんか?

    キャンセル

  • 2018/05/27 15:38

    失礼いたしました。
    function.phpに追記した内容を記載しました。
    お手数ですが、ご確認いただけますと幸いでごさいます。

    キャンセル

  • 2018/05/27 16:19

    確認しましたが、パラメータから取得する部分のコードが書かれていないようです。

    キャンセル

  • 2018/05/27 16:20

    テーマですでにフックが使用されているかどうか確認してみてください。

    キャンセル

  • 2018/05/27 16:50

    ご確認ありがとうございます。
    wordpress初心者なため、不明な点が多くもしわけありませんが何点か質問させてください。

    ・パラメータから取得する部分のコードが記載されていないというのは、$title_partsから値を取得する処理のことでしょうか。ひとまず、この関数に渡した値に関係なくタイトルが変更できるかを確認したいのですが、$title_partsから値を取得しなくてもできる、で認識合っていますでしょうか。

    ・change_document_title_partsはfunction.php以外のphpから呼び出して実行することができる、ということで合っていますでしょうか。
    私がやろうとしていることの場合、固定ページのテンプレートPHPでchange_document_title_partsを呼び出し、その際にタイトルとして設定したい値を渡せばいいということでしょうか。

    質問がばかりで大変申し訳ありませんが、ご教授していただけないでしょうか。
    すみませんが、よろしくお願いいたします。

    キャンセル

  • 2018/05/27 16:51

    また、テーマフォルダ配下をdocument_title_partsの記述があるかgrepしてみましたが、ヒットしませんでした。

    キャンセル

  • 2018/05/27 17:52

    > パラメータから取得する部分のコードが記載されていないというのは、$title_partsから値を取得する処理のことでしょうか
    コメント等をいまいち読まずに返信してしまったので、「質問本文の要件(パラメータ)について書かれていないな」と返答しました。

    > $title_partsから値を取得しなくてもできる、で認識合っていますでしょうか。
    何がどうできるかがこの文だけではわかりませんでした。

    > change_document_title_partsはfunction.php以外のphpから呼び出して実行することができる、ということで合っていますでしょうか。
    get_header();(厳密にはwp_head();)より前にフィルタの記述を入れれば可能ですが、普通はfunction.phpに書いて条件分岐タグで処理を振り分けます。

    > 期待結果としては、「タイトル - タグライン(キャッチコピー的なもの) - サイト名」とタイトルに表示されることでしたが、lightningテーマのカスタマイズから設定しているサイト名とキャッチフレーズが表示されてしまいました。

    pre_get_document_title で書き換えてみてはいかがでしょう。

    キャンセル

  • 2018/05/27 18:37

    ご回答ありがとうございます。

    >普通はfunction.phpに書いて条件分岐タグで処理を振り分けます。
    現在考えている画面フローとして、トップページからフォームに値を入力させてから固定ページへと遷移することを考えており、固定ページで使用しているPHPがパラメータを用いて処理した結果を元にタイトルを変更したいと考えています。
    このような場合でも、function.phpで分岐処理を使うだけで処理結果ごとに変更することはできるのでしょうか。

    pre_get_document_titleもすでに試しており、以下のようなコードに書き換えて再び検証しました。
    (function.phpのみ記述を追加し、他のphpには修正なし)
    -----
    function my_pre_get_document_title( $title ) {
    $title = '変更後のタイトル';
    return $title;
    }

    add_filter( 'pre_get_document_title', 'my_pre_get_document_title' );
    ----

    結果は変わらずでした。
    function.phpに上記の記載をした場合、全てのページで'変更後のタイトル'というタイトルになる想定でいたのですが、合っていますでしょうか。

    キャンセル

  • 2018/05/27 21:45

    >このような場合でも、function.phpで分岐処理を使うだけで処理結果ごとに変更することはできるのでしょうか。
    できます。

    > 結果は変わらずでした。
    デバッグモードにしてエラーを確認してみてください。
    http://mignonstyle.com/debug-mode/

    あと、「SEO用プラグイン」とか入れていませんか?すべてのプラグインを停止させてから確認してみてください。

    キャンセル

  • 2018/05/27 23:35

    ご回答ありがとうございます。
    プラグインのを無効化したところ、うまくいき、タイトルが「変更後のタイトル」になりました。
    VK All in One Expansion Unitというプラグインの影響でうまくいっていませんでした。

    何度もご回答いただき、本当にありがとうございました。

    申し訳ありませんが、もう一点質問させてください。

    固定ページのphpの処理結果によりタイトルを変更したいので、function.phpを修正しました。

    ----
    function my_pre_get_document_title( $title ) {

    if(isset($title)){
    return $title;
    }else {
    return '変更後のタイトル';
    }
    }
    --------

    そして、固定ページのphpにmy_pre_get_document_titleを呼び出すよう以下を追記しました。

    -----
    my_pre_get_document_title( ’処理結果の文字列' );
    -----

    しかし、この方法ではmy_pre_get_document_titleには処理結果が渡せませんでした。
    function.phpで分岐処理を使うだけで処理結果ごとに変更することはできるのかという質問に対してできるとのご返答をいただいたと思いますが、どのように固定ページの処理結果をmy_pre_get_document_titleに渡せばよいのでしょうか。

    何度も申し訳ありませんが、よろしくお願いいたします。

    キャンセル

  • 2018/05/27 23:39

    「固定ページの処理結果」とはどういう処理でしょうか。

    my_pre_get_document_title( ’処理結果の文字列' );と書いてもフィルタには文字列が渡りません。

    キャンセル

  • 2018/05/27 23:46

    わかりづらくて申し訳ありません。

    固定ページでテンプレートとして使用しているPHPファイルでは、受け取ったクエリパラメータを使用し、他サーバにcurlコマンドでアクセスしています。
    他サーバからの返却結果を元にタイトルを変更したいと考えています。

    キャンセル

  • 2018/05/28 00:15

    > 固定ページの処理結果をmy_pre_get_document_titleに渡せばよいのでしょうか。
    function.php(というかフックに登録する関数内)にその処理を書けばよいです。

    【WordPressをカスタマイズするなら覚えておきたいアクションフックとフィルターフック】
    http://webdesignrecipes.com/wordpress-action-hook-and-filter-hook/

    【条件分岐タグ - WordPress Codex 日本語版】
    http://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0

    キャンセル

  • 2018/05/28 20:56 編集

    ご教授ありがとうございます。

    my_pre_get_document_titleにis_page( '固定ページ名' ) の分岐処理で該当の固定ページかを判別することを理解し、実際にクエリパラメータを受け取り処理ができることも確認できました。

    無知で申し訳ありませんが、もう一点追加で質問させてください。

    curl処理を「フックに登録する関数内」に記載してしまうと、「固定ページのphp」と「フックに登録する関数内」の両方で他サーバにアクセスすることになり、アクセス回数が倍になってしまいます。
    それを回避するために「フックに登録する関数内」で他サーバから取得した結果を固定ページのphpに渡したいのですが、その方法はありますでしょうか。
    (固定ページ内では他サーバからの結果を元に画面を生成しているため、他サーバからのレスポンスを取得する必要があります)
    調べましたが、みつかりませんでした。

    何度も申し訳ありませんが、よろしくお願いいたします。

    キャンセル

  • 2018/05/28 23:06

    >一点追加で質問させてください。
    質問内容を変えるならいったん質問を解決済みにして、別途 状況を詳細に説明した質問をされてはいかがでしょうか。

    【質問するときのヒント|teratail(テラテイル)】
    https://teratail.com/help/question-tips

    キャンセル

  • 2018/05/29 00:42

    失礼いたしました。
    別途質問をあげさせていただきます。

    何度もやりとりにお付き合いいただき、本当にありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.74%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19148questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6635questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • HTML5

    3710questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。