web-dev-qa-db-ja.com

ページタイトルを動的に設定する方法はありますか

コードでページタイトルを変更することは可能ですか?

たとえば、ページの名前が「Book your Order」であるとしましょうが、それを「Book Order#123」に変更したいと思います。

私はちょっとグーグルしてここを見たが何も見えなかった。誰かがプラグインやハックを知っていますか?

wp_titleはページタイトルを返しますが、ページタイトルを設定することはできません: http://codex.wordpress.org/Function_Reference/wp_title

14
Alex Cook

それに関するドキュメントはありませんが、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;
}

これらを参照してください。

http://codex.wordpress.org/Function_Reference/the_title

http://codex.wordpress.org/Function_Reference/add_filter

19
Jared

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;
}
5
Brendan Nee

ドキュメントのtitle属性を変更したい人のために、私はwp_titleフィルタを使うことはもはやうまくいかないことを知りました。代わりに pre_get_document_titleフィルタを使用してください

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

出典

4
Nathan Arthur

現在のページのカスタムタイトル(ヘッダーの<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

2
nickb

Yoastを有効にしているときは、タイトルをオーバーライドする必要があります。

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
0
leymannx