web-dev-qa-db-ja.com

アーカイブテンプレートにYoast WordPress SEOのタイトルを表示する

YoastによるWordPress SEOプラグインは、ユーザーがSEOタイトルとメタ説明を分類学用語アーカイブページに追加することを可能にします。これらは文書の先頭で使用されます。

私は私の分類アーカイブテンプレートのH1として分類用語のSEOタイトルを表示しようとしています。

投稿でこれを行うには、投稿の種類またはページは簡単です。

echo get_post_meta($post->ID, '_yoast_wpseo_title', true); 

アーカイブテンプレートではこれは機能しません。

これを機能させる方法を誰かが知っていますか?

スクリーンショットの例

これは特定のタグ用語のタイトルです。私のアーカイブテンプレートには、このタイトルを表示しようとしています。

The tag archive edit screen

最終コード

これが私のarchive.phpテンプレートで使用した結果です。カスタム分類法を使用している場合は機能します。タグやカテゴリについては、下記のMike Madernの回答をご覧ください。

<h1 class="archive-title">
<?php
if ( is_tax() ) :                                                                   
    $taxonomy = get_queried_object()->taxonomy;
    $term_id = get_queried_object()->term_id;
    $meta   = get_option( 'wpseo_taxonomy_meta' );
    $title  = $meta[$taxonomy][$term_id]['wpseo_title'];
    //printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );
    if ( isset($meta) && !empty($title) ) :         
        echo apply_filters( 'the_title', $title );
    else :
        single_term_title();    
    endif;
endif;                              
?>
</h1>  
11
Mattvic

アーカイブSEOのタイトルを取得する

カスタム投稿タイプのアーカイブタイトルを定義した場合は、次の方法で取得できます。

$titles = get_option( 'wpseo_titles' );
$title  = $titles['title-ptarchive-POST_TYPE'];

echo apply_filters( 'the_title', $title );

POST_TYPEをあなた自身のカスタム投稿タイプに置き換えることを忘れないでください。

すべてのwpseo_title変数を表示するには、次のようにします。

printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_titles' ), 1 ) );

だからあなたは簡単にあなたが必要なものを選ぶことができます。

Term SEOのタイトルを取得する

カテゴリー

このコードを使うことであなたが定義したSEOタイトルを得ることができます:

$cat_id = get_query_var( 'cat' );
$meta   = get_option( 'wpseo_taxonomy_meta' );

$title  = $meta['category'][$cat_id]['wpseo_title'];

echo apply_filters( 'the_title', $title );

タグ

このコードを使うことであなたが定義したSEOタイトルを得ることができます:

$tag_id = get_query_var( 'tag' );
$meta   = get_option( 'wpseo_taxonomy_meta' );

$title  = $meta['post_tag'][$tag_id]['wpseo_title'];

echo apply_filters( 'the_title', $title );

すべてのwpseo_taxonomy_meta変数を表示するには、次のようにします。

printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );

このようにして、構造と利用可能な変数を見ることができます。

15
Mike Madern

ポストループのアーカイブページに、それを機能させるために次のコード行を追加します。

echo get_post_meta(get_the_ID(), '_yoast_wpseo_title', true); 

それがあなたのために働いているかどうか教えてくださいまたは私は別の解決策を提供します。

5
Vinod Dalvi

focusキーワードを取得する カテゴリとタグ用

プログラムでカテゴリまたはタグの focusキーワード を取得するには、次の2つの方法のいずれかを使用できます。

            /** Method 1. Tap into the options directly. **/
            $meta = get_option( 'wpseo_taxonomy_meta' ); // needed only once, so keep this outside/before your foreach loop.

            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo $meta['post_tag'][$tag->term_id]['wpseo_focuskw'];
                }
            }

これは基本的に彼の投稿の最後にマイクが使ったアプローチです。

または

            /** Method 2. Use Yoast's function. **/
            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo WPSEO_Taxonomy_Meta::get_term_meta( $tag->term_id, 'post_tag', 'focuskw' );
                }
            }

私は自分自身でメタオプションを取得することや取得することを気にする必要がないので、私は2番目のアプローチを好む傾向があります。

あなたのfunctions.phpでは、if class_exists( 'WPSEO_Taxonomy_Meta' )をテストし、それからYoast SEOの使用をやめることになった場合に備えて安全のためにYoast関数をあなた自身の関数にラップすることができます。

いくつかの背景

元の質問で述べたように、get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);のようなものはカテゴリやページには機能しません(何も返しません)。

それで、それはなぜですか?

これは、カテゴリとタグの場合、focusキーワードがデータベースの他の場所に保存されているためです。通常のようにwp_postmetaテーブルの内部に保存されるのではなく、JSONオブジェクトとしてwp_optionsテーブルの内部に埋め込まれます。

上記の方法でこれらの値にアクセスできます。


最後に、あなたが私のようで分類法の名前を思い出せない場合(例:なぜtagではなく分類法post_tagが使われるのかはっきりしません、カテゴリやタグを編集するときにURLをチェックするだけです:it …taxonomy=category…などを表示します

0

カテゴリとタグのfocusキーワードを取得する

//うまくいきます
//残りの部分にapiを付けて

/ wp-json/wp/v2/categoriesを取得しますか?slug = slug_name

方法1を使用するplugin.in

改行

$meta['post_tag'][$tag->term_id]['wpseo_focuskw'];

$meta['category'][$param_post_id]['wpseo_focuskw'];

0
Chaiiz Rataphan