🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

Q&A

1回答

1031閲覧

WordPress カスタム投稿タイトルにカスタムフィールドの値を入るようにしたが、該当の一覧ページや記事ページのメニューバーまで変わってしまいます。

yuki-kura

総合スコア4

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/12/25 21:14

編集2019/12/26 18:48

前提・実現したいこと

WordPressのプラグイン
Custom Post Type UI にてカスタム投稿を作成( fishing )
Advanced Custom Fields にてカスタムフィールドを作成 ( fishing_title )
functions.phpにコードを入れました
投稿時
カスタム投稿のタイトルに、カスタムフィールドでディピッカーにて、日付を取得
その日付の情報をカスタム投稿のタイトルにしたく、コードを入れました
タイトルは取得できるのですが、カスタム投稿のカテゴリー一覧ページや
カスタム投稿の記事ページのメニューバーまで日付にかわってしまいます。

WordPressもphpも初心者で、無茶は承知なのですが
なにとぞご教示の程よろしくお願い致します

発生している問題・エラーメッセージ

カスタム投稿のカテゴリー一覧ページや カスタム投稿の記事ページのメニューバーがカスタムフィールドから取得した日付にかわる

該当のソースコード

php

1function my_auto_title($title_message){ 2 3 global $post; 4 5 // ポストタイプがカスタムかどうかチェック 6 if( $post->post_type == 'fishing' ){ 7 $fishing_title = get_post_custom_values('fishing_title'); 8 if( $fishing_title ){ 9 //$title_message = $title_message . ' at '; 10 //$title_message = $title_message . $fishing_title[0]; 11 //$title_message = ' at ' . $fishing_title[0]; 12 $title_message = $fishing_title[0]; 13 } 14 15 } 16 17 return $title_message; 18 19}

試したこと

最初はWordPress自体が壊れたと思い、dbなどいじれないので
全て消去し、1からやりなおしました
しかし、同じようにfunctions.phpをUPしたところ
同じ症状になり、戻したらもとに戻りました(汗)

検索にて、色々な記事を見て
is_singular() と、 in_the_loop() を入れておくのがポイント
と書かれてありましたがどこへ入れれば良いかよくわからず
functions.phpの該当コードの行へ
if ( is_singular() && in_the_loop() ) {
/* Modify $title */
}
を入れてはUP→確認→次の行へを繰り返しましたがダメでした

補足情報(FW/ツールのバージョンなど)

WordPress 4.9.13 です

追加
正常
イメージ説明

こうなってしまいます
イメージ説明

20191227現在の状況 左が今まで 右が今回
イメージ説明

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/12/27 08:11

問題と直接は関係ないですがget_post_custom_values()をお使いですが1つの記事にfishing_titleは複数存在するのでしょうか? $fishing_title[0]としているところからすると1つしか存在しないのではと想像しますが。
yuki-kura

2019/12/27 18:08

Space-Monkey様 お返事ありがとうございます ご指摘の通り、fishing_titleは一つしか存在しません 使い方間違えてますでしょうか?(汗)
退会済みユーザー

退会済みユーザー

2019/12/28 02:24

そうですね。 あと、記事一覧というのは管理画面は除外したいという意味ですか? 質問を読むと管理画面では手入力したタイトルで表示させて公開画面の記事ページのみ日付をタイトルとして表示させたいように思えます。 もう少し詳しく書いてみてください。
guest

回答1

0

こういう事でしょうか?

php

1//ポストタイプがカスタムかつシングルページかどうかチェック 2if( $post->post_type == 'fishing' || is_singular(‘fishing’) )

投稿2019/12/25 23:57

編集2019/12/25 23:58
madone99

総合スコア1857

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

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

yuki-kura

2019/12/26 00:34

madone99 様 お返事ありがとうございます。 頂きましたコードを入れたところ Warning: Use of undefined constant ‘fishing’ - assumed '‘fishing’' (this will throw an Error in a future version of PHP)  と出てしまいました このようにしました function my_auto_title($title_message){ global $post; //ポストタイプがカスタムかつシングルページかどうかチェック if( $post->post_type == 'fishing' || is_singular(‘fishing’) ){ $fishing_title = get_post_custom_values('fishing_title'); if( $fishing_title ){ //$title_message = $title_message . ' at '; //$title_message = $title_message . $fishing_title[0]; //$title_message = ' at ' . $fishing_title[0]; $title_message = $fishing_title[0]; } } return $title_message; } add_filter('single_post_title', 'my_auto_title'); add_filter('the_title', 'my_auto_title'); そこで is_singular(‘fishing’) の‘fishing’を(コピーペーストしたところ ‘’ が、全角になってしまったようです) 'fishing' へ変更したところ、表示はされたのですがやはりメニューバーも日付になってしまいました なかなか難しいですね
madone99

2019/12/26 01:03 編集

スマホで入れたので全角になっていたのですね、失礼しました。 具体的に変わるというのは、一覧ページやメニュバー(サイドバー?)で表示される singleページのリンクになっているテキストのことですか? スクリーンショットを質問に追加すると回答が得られやすいかも知れません。
yuki-kura

2019/12/26 13:29

madone99様 お返事ありがとうございます。 質問の一番下に、スクリーンショットを付けさせていただきました アドバイスありがとうございます 場所は、singleページのグローバルメニューのテキストです よろしくお願いいたします
madone99

2019/12/26 14:19 編集

add_filter('the_title', 'my_auto_title'); このフィルターを使用しているせいですね。 以下のようにしてみるとどうでしょうか? if( ($post->post_type == 'fishing' || is_singular('fishing')) && in_the_loop() ) { //以下略
yuki-kura

2019/12/26 18:55

madone99様 お返事ありがとうございます、そしていつもありがとうございます if( ($post->post_type == 'fishing' || is_singular('fishing')) && in_the_loop() ) { //以下略 頂きましたコードを入れたところ メニューのテキスト部分は直り、次の記事に送るボタンには fishing_title の値が入るようになりましたが 管理画面側に適応されなくなってしまいました 質問の一番下に、スクリーンショットを付けさせていただきました どこかが直ると、どこかがダメに...なかなかハードルが高いのですね(;´・ω・)
madone99

2019/12/27 01:22 編集

なるほど、そうなんですね。 add_filterの下にもう一つ追加してみて下さい。 add_filter('the_post', ‘my_admin_title’,100); function my_admin_title($title){ global $post; if( $post->post_type == 'fishing'){ $fishing_title = get_post_custom_values('fishing_title'); if( $fishing_title ){ $title = $fishing_title[0]; } } return $title; }
yuki-kura

2019/12/27 09:30

madone99様 こんばんは、お返事ありがとうございます 追加してみましたが 今回はなにも、変化がありませんでした
madone99

2019/12/27 17:42

すいません。実際にテスト環境で検証していて遅くなりました。 こちらの手元の環境では、前回追加をお願いしたコードがなくても 管理画面で日付のタイトルになるようでした。 もしかするとご利用のテーマの方で上書きしているかも知れませんので テーマをtwentytwelveなどに変更しても再現されるでしょうか? (カスタム投稿やfunctions.phpへの追加も必要になりそうですが)
yuki-kura

2019/12/27 18:25 編集

madone99様 いつもありがとうございます 私の質問に載せたコードにて、管理画面ではタイトルが日付には変わるのですが webページ側のメニューまで日付になってしまって、ご質問いたしました この時点では 管理ページのタイトル:日付  次の記事へ送る:日付  webページ側 fishing 以下のカテゴリー一覧や、投稿のページのメニュー:日付 ここが困った場所です 他のページのメニューは正常でした if( ($post->post_type == 'fishing' || is_singular('fishing')) && in_the_loop() ) { //以下略 を頂き、適応した時点で 管理ページのタイトル:自動下書き 今はここが困っています 次の記事へ送る:日付  webページ側 fishing 以下のメニュー:直りました と、こんな感じです テーマの方で上書きですか、そんなこともあるのですね 自分にサクサク出来る技術が無く ちょっと遅くなってしまいますが、試してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問