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

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

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

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

PHP

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

Q&A

解決済

2回答

338閲覧

ダブって読み込まれるtitleタグを片方だけ削除したい

iambeginnerr

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2022/06/10 06:45

前提

wordpressで検索サイトを制作しています。
絞り込み検索時には、titleタグ内に、絞り込んだスラッグ名が動的に表示されるような設定にしました(下記コードをご覧ください)。
※絞り込み検索と検索結果は、search&filter proというプラグインを使用し、固定ページに表示しております。

■header.php

<?php $area = $_GET['_area_cat']; $genre = $_GET['_genre_cat']; ?> <?php if( is_page('tokyo') ): ?> <title> 東京都 <?php echo get_term_by('slug',$area,"area_cat")->name; ?>の飲食店 <?php if (isset($_GET['_genre_cat'])) : ?>  (<?php $title_cats = array(); foreach(explode(",", $genre) as $genre_slug) { $genre_cat = get_term_by("slug", $genre_slug, "genre_cat"); if ($genre_cat) { $title_cats[] = $genre_cat->name; } } echo implode(",", $title_cats); ?>) <?php else: ?> <?php endif; ?> </title> <?php else: ?> <?php endif; ?>

上記コードを設置後、ソースコードを確認すると、titleタグが二つダブって表示されています。
wp_headが出力するtitleタグです。
ダブっていてはまずいと思い、wp_headが出力するtitleタグを、絞り込み検索結果ページのみ非表示にしようと考えました。
functions.phpにtitleタグを削除するコードを書き込もうと考えたのですが、いくら調べても特定のページにのみ適用する方法がわかりませんでした。

実現したいこと

絞り込み検索結果が表示される固定ページにのみ、header.phpに書いたtitleタグを活かし、wp_headが出力するtitleタグを削除したいです(絞り込み検索以外のページでは、wp_headが出力するtitleタグをそのまま使用したい)。
functions.phpはほとんど編集したことがなく、PHPの知識も乏しいため解決が困難になり質問させていただきました。
参考ページでも構いません、皆様の知恵をお貸しください!!
よろしくお願いいたします。

試したこと・該当のソースコード

様々なサイトを検索し、下記のコードでtitleタグを削除できることはわかったのですが、特定のページに適用させるコードをどのように起こして良いのかわかりませんでした。

■functions.php

function remove_action( 'wp_head', '_wp_render_title_tag', 1 );

補足情報

WPのバージョンは、5.9です。

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

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

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

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

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

guest

回答2

0

functions.phpにtitleタグを削除するコードを書き込もうと考えたのですが、いくら調べても特定のページにのみ適用する方法がわかりませんでした。

特定のページに適用させるコードをどのように起こして良いのかわかりませんでした。

質問のコードにも <?php if( is_page('tokyo') ): ?> のように is_page('tokyo') が使われていますが、このような条件分岐タグ で現在のページを判断できます。


また、wp_head() の出力する title タグを書き換えるのであれば、 wp_get_document_title() の結果を利用して表示しているので、pre_get_document_title フックで変更できると思います。

投稿2022/06/10 09:15

CHERRY

総合スコア25171

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

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

iambeginnerr

2022/06/13 07:04

回答いただきありがとうございます! やはりタグを書き換える方法が良いのですね... 下記のように設定してみたのですが、titleタグには何も反映されませんでした。 お気づきの点がありましたらご指摘いただければ幸いです。 よろしくお願いいたします。 ■functions.php add_filter('pre_get_document_title',function($title){ if( is_page('tokyo')){ $area = $_GET['_area_cat']; $genre = $_GET['_genre_cat']; $title_cats = array(); foreach(explode(",", $genre) as $genre_slug) { $genre_cat = get_term_by("slug", $genre_slug, "genre_cat"); } return sprintf( '東京都%sの飲食店 %s', get_term_by('slug',$area,"area_cat")->name, implode(",", $title_cats) ); } return $title; });
guest

0

ベストアンサー

特定の固定ページでだけタイトルを変える、というやり方の方がよかろうと思います。

php

1add_filter('pre_get_document_title',function($title){ 2 if( is_page('tokyo')){ 3 ... 4 return sprintf( 5 '東京都%sの飲食店 %s', 6 get_term_by('slug',$area,"area_cat")->name, 7 implode(",", $title_cats) 8 ); 9 } 10 return $title; 11});

投稿2022/06/10 09:00

KazuhiroHatano

総合スコア7804

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

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

iambeginnerr

2022/06/13 07:03

回答いただきありがとうございます! 下記のように設定してみたのですが、titleタグには何も反映されませんでした。 お気づきの点がありましたらご指摘いただければ幸いです。 よろしくお願いいたします。 ■functions.php add_filter('pre_get_document_title',function($title){ if( is_page('tokyo')){ $area = $_GET['_area_cat']; $genre = $_GET['_genre_cat']; $title_cats = array(); foreach(explode(",", $genre) as $genre_slug) { $genre_cat = get_term_by("slug", $genre_slug, "genre_cat"); } return sprintf( '東京都%sの飲食店 %s', get_term_by('slug',$area,"area_cat")->name, implode(",", $title_cats) ); } return $title; });
KazuhiroHatano

2022/06/13 09:00

動いてないようなら、当該のコードの処理が実行されているのか、 エラーが出てないかの確認をしましょう。 とりあえず 1. そのコードだと$title_cats 空のままですよね 2. 固定ページtokyoであっても検索パラメータがなければtermの取得に失敗してエラーになるはずです、検索パラメータがない場合も想定してください
iambeginnerr

2022/06/14 06:37

返信いただきありがとうございます! 多方面から検証した結果、コードが反映されない理由は、yoastseoを使用しているからでした! コード自体は、再度見直し、(yoast停止時は)以下のコードで解決できました。 yoastを停止せずに、以下のコードを反映させる方法がまだわかりませんが... もう少し調べてみて、解決しないようでしたら別な質問として投稿させていただきます。 この度は最後までお付き合いくださりありがとうございました!! //titleタグを動的に出力 add_filter('pre_get_document_title',function($title){ if( is_page('tokyo')){ $area = $_GET['_area_cat']; $genre = $_GET['_genre_cat']; if (isset($_GET['_genre_cat'])) { $title_cats = array(); foreach(explode(",", $genre) as $genre_slug) { $genre_cat = get_term_by('slug', $genre_slug, "genre_cat"); if ($genre_cat) { $title_cats[] = $genre_cat->name; } } } return sprintf( "東京都 %s の飲食店 (%s)" , get_term_by('slug',$area,"area_cat")->name, implode(",", $title_cats) ); } return $title; });
KazuhiroHatano

2022/06/14 07:56

多分yoastも同じフックを使っているので add_filterの第3引数の優先度を100とか高めに設定して yoastより後に処理されるようにすれば良いかと思います
iambeginnerr

2022/06/16 06:54

何から何までありがとうございます! こちらのページ(https://hauer.jp/oz7g95jupw/)を参考に、以下のように書き換えてみました。 //絞り込み検索結果ページのtitleタグを動的に出力 function my_custum_title($title){ if( is_page('tokyo')){ $area = $_GET['_area_cat']; $genre = $_GET['_genre_cat']; if (isset($_GET['_genre_cat'])) { $title_cats = array(); foreach(explode(",", $genre) as $genre_slug) { $genre_cat = get_term_by('slug', $genre_slug, "genre_cat"); if ($genre_cat) { $title_cats[] = $genre_cat->name; } } } return sprintf( "東京都 %s の飲食店 (%s)" , get_term_by('slug',$area,"area_cat")->name, implode(",", $title_cats) ); } return $title; } add_filter('wpseo_title','my_custum_title'); add_filter('wpseo_opengraph_title','my_custum_title'); yoastが有効化中でも、一応問題なくtitleタグが上書きされたようです! ご教示いただいた、 「add_filterの第3引数の優先度を100とか高めに設定して yoastより後に処理されるようにすれば良いかと思います」 という内容に関しまして、調べてみたのですがどのように指定して良いのかわかりませんでした。 問題なく動作はしているようなのですが、やはり「第3引数」というものを設定しておいた方が良いのでしょうか。 動作はしておりますので、お手隙の際にご返信いただければ幸いです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問