コードでページタイトルを変更することは可能ですか?
たとえば、ページの名前が「Book your Order」であるとしましょうが、それを「Book Order#123」に変更したいと思います。
私はちょっとグーグルしてここを見たが何も見えなかった。誰かがプラグインやハックを知っていますか?
wp_titleはページタイトルを返しますが、ページタイトルを設定することはできません: http://codex.wordpress.org/Function_Reference/wp_title
それに関するドキュメントはありませんが、the_title
にいつでもフィルタを適用することができます。
add_filter('the_title','some_callback');
function some_callback($data){
global $post;
// where $data would be string(#) "current title"
// Example:
// (you would want to change $post->ID to however you are getting the book order #,
// but you can see how it works this way with global $post;)
return 'Book Order #' . $post->ID;
}
これらを参照してください。
Wordpress 4.4では、タイトルを変更するためにWordpressフィルタ document_title_parts
を使用することができます。
functions.php
に以下を追加してください。
add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
// $title is an array of title parts, including one called `title`
$title['title'] = 'My new title';
if (is_singular('post')) {
$title['title'] = 'Fresh Post: ' . $title['title'];
}
return $title;
}
ドキュメントのtitle
属性を変更したい人のために、私はwp_title
フィルタを使うことはもはやうまくいかないことを知りました。代わりに pre_get_document_title
フィルタを使用してください :
add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
return "My Modified Title";
}
現在のページのカスタムタイトル(ヘッダーの<title></title>
タグの内容)を表示するのか、ページ本文またはリスト内のページのタイトルを絞り込むのかは、実際に異なります。
前者の場合(現在のページのタイトル)、wp_title()
のようにフィルタを追加してみてください。 http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
あなたが全面的にページタイトルを修正したいならば、the_title()
をフィルタリングすることはトリックをするでしょう: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title
Yoastを有効にしているときは、タイトルをオーバーライドする必要があります。
add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {
global $wp;
$current_slug = $wp->request;
if ($current_slug == 'foobar') {
return 'Foobar';
}
}