すべてのWordPressページは、2つのタイトルを持つものとして説明できます。
the_title()
関数呼び出しによってページ/投稿内に表示されるページ/投稿のタイトル
ブラウザの上部にタイトルを表示するhtml <title></title>
タグ
私はある時点でページのタイトルを動的に変更するプラグインを書いています(まあ、それは上で説明した両方のタイトルを変更するはずです)。
そのため、上記のステップ1では、Stack Overflowに複数の解決策( this または this など)が見つかりました。これらは上記のステップ1だけに最適です。
ステップ2のために、私は これ 解決策を見つけました。一言で言えば、これはそれがどのように動作するかです:
add_filter('wp_title', 'change_page_title');
function change_page_title ($title) {
// Do some magic, and eventually modify $title then return it
return $title;
}
しかし提案された解決策は私にはうまくいきません。そして動作していないということは、フィルタが関連する関数を呼んでいないということです。何が問題なのかわかりません。このフィルタはテーマではなくプラグインの中から呼び出されているのでしょうか。 (ちなみに、私はテーマファイルにアクセスできないので、プラグイン内から行う必要があります)。
どうすればこれを達成できますか?プラグイン内から動的にページのブラウザタイトルを変更するにはどうすればよいですか?
ありがとう。
投稿またはページにはタイトルが1つだけあります。タイトルタグ<title>
はドキュメントのタイトルです。
フィルタwp_title
は、ドキュメントのタイトルを出力するために以前使用されていたwp_title()
関数の出力をフィルタします。 WordPress 4.1では、テーマにおけるタイトルタグのサポートが導入され、wp_get_document_title()
の代わりに wp_title()
が使用されます。そのため、テーマがtitle-tag
をサポートしている場合、wp_title
フィルタは効果がありませんが、他のフィルタを使用することができます。
pre_get_document_title
新しいタイトルを設定する
add_filter( 'pre_get_document_title', 'cyb_change_page_title' );
function cyb_change_page_title () {
return "Custom title";
}
document_title_separator
タイトルセパレータをフィルタリングする
add_filter('document_title_separator', 'cyb_change_document_title_separator');
function cyb_change_document_title_separator ( $sep ) {
return "|";
}
documente_title_parts
タイトルのさまざまな部分(タイトル、ページ番号、タグライン、サイト名)をフィルタリングします。
add_filter( 'document_title_parts', 'cyb_change_document_title_parts' );
function cyb_change_document_title_parts ( $title_parts ) {
$title_parts['title'] = 'Custom title';
$title_parts['page'] = 54;
$title_parts['tagline'] = "Custom tagline";
$title_parts['site'] = "My Site"; // When not on home page
return $title_parts;
}
PD:テーマがtitle-tag
をサポートしているかどうかをチェックするために current_theme_supports( 'title-tag' )
を使うことができます。
あなたのpage.phpまたはあなたが変更したいページでこのコードを使う<pre> <title><?php wp_title(); ?> | <?php bloginfo(‘name’); ?></title> </pre>