投稿タイトルにカスタムフィールドを追加しようとしています( サンプルページ )。そうするために、私は この前の質問 で与えられた指示に従っています、しかし変数は予想通りタイトルに現れていません。実際には、まったく同じタイトルが表示されます。任意の助けがいただければ幸いです。
前の指示は、次のコードがfunctions.phpに追加されるべきであることを示します:
function wpse_224340_document_title($title){
global $post; // make sure the post object is available to us
if(is_singular()){ // check we're on a single post
$release_author = get_post_meta(get_the_ID(), "release_author", true);
if($release_author != "")
{ $title["title"].= " (" . $release_author. ")";}
}
return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });
私の場合の変数は propertyysq であり、 release_author ではありません。しかし、単純な検索/置換は以下のようになりました...
このコードを実装するとどうなりますか?
現在のページタイトルは次のとおりです。HS0525 - Chaweng Noi - Horizon Homes Koh Samui
このタイトルは、Wordpressプラグイン「Yoast SEO」によって自動的に挿入されました。ただし、この自動タイトル挿入を無効にして上記のコードを挿入した後、ページに挿入されたタイトルは前のページのタイトルと同じになります。HS0525 - Chaweng Noi - Horizon Homes Koh Samui
考えられるエラーの原因
エラーの原因として考えられる#1 :それ自身の<title>
をページに押し付けている前述のプラグイン/メカニズム。これが原因かどうか私は現在調査中です。プラグインを完全に削除しないようにしたいのですが、そうする必要があるかもしれません。
考えられるエラーの原因#2 :自分のテーマや機能に対応するように、次の行を編集する必要がありますか。
$release_author = get_post_meta(get_the_ID(), "release_author", true);
次の行に置き換えてみましたが、うまくいきませんでした。
$propertysq = ale_get_meta('propertysq');
私は注意すべきです:
<title>
タグをコメントアウトすることも覚えていました。編集:これは私がfunctions.phpに挿入した正確なコードです:
add_filter("document_title_parts", "wpse_224340_document_title");
function wpse_224340_document_title($title){
global $post; // make sure the post object is available to us
if(is_singular()){ // check we're on a single post
$propertysq = get_post_meta(get_the_ID(), "propertysq", true);
if($propertysq != "")
{ $title["title"].= " (" . $propertysq. ")";}
}
return $title;
}
add_filter("after_setup_theme", function(){ add_theme_support("title-tag"); });
私はあなたがタイトルにpropertysq
カスタムフィールド/投稿メタを使いたいと思い、あなたはYoast SEOを使います。 (間違っていたら訂正してください)
だから、これはあなたのfunctions.php
です
function wpse239252_hook_title($title) {
global $post; // make sure the post object is available to us
if(is_singular()){ // check we're on a single post
$propertysq = get_post_meta(get_the_ID(), "propertysq", true);
if($propertysq != "") { //check if not empty
$title = $propertysq.' - '.$title;
}
}
return $title;
}
add_filter('wpseo_title', 'wpse239252_hook_title', 15, 1);
これはあなたの与えられた例で1,002Sq Mt - HS0525 - Chaweng Noi - Horizon Homes Koh Samui
としてあなたのタイトルにpropertysq
フィールドを追加します、ここでpropertysq = 1,002Sq Mt
。
P.S:post_meta propertyysqを得るためには$propertysq = get_post_meta(get_the_ID(), "propertysq", true);
を使います
それがあなたのために働くならば私を聞かせて。
非常に多くの人がそれを操作したいので、ヘッダに<title>
タグを含めることはもはや流行ではありません。代わりに、あなたはそこにwp_head
を置き、あなたのテーマでそれをサポートすることによってタイトルの操作を可能にします:
add_action('after_setup_theme','wpse239252_theme_init');
function wpse239252_theme_init () {
add_theme_support('title-tag');
}
さて、 wp_title
フィルターを使用して、あらゆる種類の(SEO)プラグインがそれで動作したいと思うかもしれません。このフィルタを使って何かをして後でプラグインを起動すると、行ったことがすべて失われる可能性があります。今、私はあなたがどのプラグインをインストールしたのかわかりませんが、あなたはあなたのフィルタがこれに高い優先順位を与えることによって最後であることを確認することができます。
add_filter( 'wp_title', 'wpse239252_title_filter', 9999, 2 );
function wpse239252_title_filter ($title,$separator) {
... do stuff with $title ...
return $title;
}