ページタイトルを動的に設定する方法


19

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

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

私は少しグーグルでここを見て、何も見ませんでした。プラグインやハックを知っている人はいますか?

wp_titleはページタイトルを返しますが、ページタイトルの設定は許可しません:http ://codex.wordpress.org/Function_Reference/wp_title


値はどこから来るのでしょうか?そのページの#123の値は何ですか?
Sagive SEO

回答:


23

ドキュメントはありませんが、次の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


これはすべてのタイトルを上書きするようです。現在のタイトルのみをオーバーライドするにはどうすればよいですか?
ペトリュスセロン

あなたは、例えば、コールバックに条件を追加する必要があるだろうif ($post->ID == 45) { ... }
ニック・バレット

3
the_titleフィルターは、Wordpressの最新バージョンでは機能しなくなり、他の回答で詳しく説明されているように使用document_title_partsまたはpre_get_document_titleフィルターします。
ブレンダンニー

8

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;
}

しかし、パラメーターをフィルターにどこに渡しますか?
Tintinabulatorゼア

上記の関数は、方法the_title()get_the_title()関数の動作を変更するため、パラメーターを渡す必要はありません。
ブレンダンニー

5

文書のtitle属性を変更したい人のために、wp_titleフィルターの使用はもはや機能しないことがわかりました。代わりにpre_get_document_titleフィルターを使用ます

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

ソース


1
この更新を投稿して数年後に戻ってきてくれてありがとう。私は何年も私のプラグインでwp_titleを使用していましたが、それが今まで機能しなくなったことに気付かず、あなたの答えは私に多大な労力を節約しました。よろしくお願いします!
マシューリー

@MatthewLeeそれを聞いて喜んであなたを助けた:)
ネイサン

2

現在のページのカスタムタイトル(つまり、 <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


実は私の経験で、あなたは両方をフィルタリングする必要があるwp_titlethe_titleの両方をカバーします。
ジェフリー

廃止されたためかどうかはわかりませんが、私にとってはうまくいきません。組み合わせとインラインフィルター、および新しいapply_filters( 'pre_get_document_title'、string $ title)を試しました
着陸し

悲しいことにどちらも私のために働いた。
デビーKurth

この答えはほぼ6歳です。ポスター(およびWPを積極的に使用していない人)として、代わりに最新のドキュメントを参照することをお勧めします。
nickb

1

Yoastを有効にすると、次のようにタイトルをオーバーライドする必要があります。

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

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

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-1

ページごとにタイトルを変更したいですか?最初に、カスタム投稿がボックスに合うようにセットアップしました。Smashing Magazineが最近取り上げました:http : //wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/。次に、カスタムメタボックスに値がある場合、タイトルを置き換える単純な関数を作成できます。

この機能も提供するいくつかのSEOプラグインがあります。例としてYoast SEOを試してください: http

お役に立てれば。


1
これらのソリューションは、タイトルを「動的に」ではなく「手動で」変更しません。
グスタボ

1
史上最悪のソリューション
ヴィシャル・クマールSahu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.