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

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

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

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

WordPress

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

PHP

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

Q&A

解決済

1回答

1130閲覧

wordpressで、titleを変更する方法

tsurezure1

総合スコア17

HTML5

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

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/05/24 12:37

編集2018/05/27 06:37

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テーマのカスタマイズから設定しているサイト名とキャッチフレーズが表示されてしまいました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsurezure1

2018/05/25 06:53

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

回答1

0

ベストアンサー

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

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

投稿2018/05/24 13:32

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/05/25 07:08

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

2018/05/26 12: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に記載しています。 何か私のした対応で間違っている箇所がありましたら教えていただけないでしょうか。
kei344

2018/05/26 19:56

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

2018/05/27 06:38

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

2018/05/27 07:19

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

2018/05/27 07:20

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

2018/05/27 07:50

ご確認ありがとうございます。 wordpress初心者なため、不明な点が多くもしわけありませんが何点か質問させてください。 ・パラメータから取得する部分のコードが記載されていないというのは、$title_partsから値を取得する処理のことでしょうか。ひとまず、この関数に渡した値に関係なくタイトルが変更できるかを確認したいのですが、$title_partsから値を取得しなくてもできる、で認識合っていますでしょうか。 ・change_document_title_partsはfunction.php以外のphpから呼び出して実行することができる、ということで合っていますでしょうか。 私がやろうとしていることの場合、固定ページのテンプレートPHPでchange_document_title_partsを呼び出し、その際にタイトルとして設定したい値を渡せばいいということでしょうか。 質問がばかりで大変申し訳ありませんが、ご教授していただけないでしょうか。 すみませんが、よろしくお願いいたします。
tsurezure1

2018/05/27 07:51

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

2018/05/27 08:52

> パラメータから取得する部分のコードが記載されていないというのは、$title_partsから値を取得する処理のことでしょうか コメント等をいまいち読まずに返信してしまったので、「質問本文の要件(パラメータ)について書かれていないな」と返答しました。 > $title_partsから値を取得しなくてもできる、で認識合っていますでしょうか。 何がどうできるかがこの文だけではわかりませんでした。 > change_document_title_partsはfunction.php以外のphpから呼び出して実行することができる、ということで合っていますでしょうか。 get_header();(厳密にはwp_head();)より前にフィルタの記述を入れれば可能ですが、普通はfunction.phpに書いて条件分岐タグで処理を振り分けます。 > 期待結果としては、「タイトル - タグライン(キャッチコピー的なもの) - サイト名」とタイトルに表示されることでしたが、lightningテーマのカスタマイズから設定しているサイト名とキャッチフレーズが表示されてしまいました。 pre_get_document_title で書き換えてみてはいかがでしょう。
tsurezure1

2018/05/27 09: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に上記の記載をした場合、全てのページで'変更後のタイトル'というタイトルになる想定でいたのですが、合っていますでしょうか。
kei344

2018/05/27 12:45

>このような場合でも、function.phpで分岐処理を使うだけで処理結果ごとに変更することはできるのでしょうか。 できます。 > 結果は変わらずでした。 デバッグモードにしてエラーを確認してみてください。 http://mignonstyle.com/debug-mode/ あと、「SEO用プラグイン」とか入れていませんか?すべてのプラグインを停止させてから確認してみてください。
tsurezure1

2018/05/27 14: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に渡せばよいのでしょうか。 何度も申し訳ありませんが、よろしくお願いいたします。
kei344

2018/05/27 14:39

「固定ページの処理結果」とはどういう処理でしょうか。 my_pre_get_document_title( ’処理結果の文字列' );と書いてもフィルタには文字列が渡りません。
tsurezure1

2018/05/27 14:46

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

2018/05/27 15: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
tsurezure1

2018/05/28 12:41 編集

ご教授ありがとうございます。 my_pre_get_document_titleにis_page( '固定ページ名' ) の分岐処理で該当の固定ページかを判別することを理解し、実際にクエリパラメータを受け取り処理ができることも確認できました。 無知で申し訳ありませんが、もう一点追加で質問させてください。 curl処理を「フックに登録する関数内」に記載してしまうと、「固定ページのphp」と「フックに登録する関数内」の両方で他サーバにアクセスすることになり、アクセス回数が倍になってしまいます。 それを回避するために「フックに登録する関数内」で他サーバから取得した結果を固定ページのphpに渡したいのですが、その方法はありますでしょうか。 (固定ページ内では他サーバからの結果を元に画面を生成しているため、他サーバからのレスポンスを取得する必要があります) 調べましたが、みつかりませんでした。 何度も申し訳ありませんが、よろしくお願いいたします。
kei344

2018/05/28 14:06

>一点追加で質問させてください。 質問内容を変えるならいったん質問を解決済みにして、別途 状況を詳細に説明した質問をされてはいかがでしょうか。 【質問するときのヒント|teratail(テラテイル)】 https://teratail.com/help/question-tips
tsurezure1

2018/05/28 15:42

失礼いたしました。 別途質問をあげさせていただきます。 何度もやりとりにお付き合いいただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問