Tampilkan judul Yoast WordPress SEO dalam templat arsip

13

Plugin WordPress SEO oleh Yoast memungkinkan pengguna untuk menambahkan judul SEO dan deskripsi meta ke halaman arsip istilah taksonomi. Ini kemudian digunakan di kepala dokumen.

Saya mencoba untuk menampilkan judul SEO dari istilah taksonomi sebagai H1 dalam templat arsip taksonomi saya.

Untuk melakukan ini dalam posting, jenis posting atau halaman mudah:

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

Pada templat arsip ini tidak berfungsi.

Adakah yang tahu cara membuatnya bekerja?

Contoh tangkapan layar

Ini adalah judul istilah tag tertentu. Saya mencoba untuk menampilkan judul ini - tetapi kemudian untuk istilah taksonomi khusus - di template arsip saya.

Layar edit arsip tag

Kode akhir

Inilah yang akhirnya saya gunakan dalam archive.phptemplate saya . Ini berfungsi jika Anda menggunakan taksonomi khusus. Untuk tag atau kategori, lihat jawaban Mike Madern di bawah ini.

<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>  
Mattvic
sumber

Jawaban:

19

Dapatkan judul Arsip SEO

Jika Anda menetapkan judul arsip Jenis Posting Khusus, Anda bisa mendapatkannya dengan:

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

echo apply_filters( 'the_title', $title );

Ingatlah untuk mengganti POST_TYPEdengan Jenis Posting Kustom Anda sendiri.

Untuk menampilkan semua wpseo_titlevariabel, Anda dapat menggunakan:

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

Jadi Anda dapat dengan mudah memilih yang Anda butuhkan.

Dapatkan judul Istilah SEO

Kategori

Dengan menggunakan kode ini Anda bisa mendapatkan judul SEO yang Anda tetapkan:

$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 );

Tag

Dengan menggunakan kode ini Anda bisa mendapatkan judul SEO yang Anda tetapkan:

$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 );

Untuk menampilkan semua wpseo_taxonomy_metavariabel, Anda dapat menggunakan:

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

Dengan cara ini Anda dapat melihat struktur dan variabel yang tersedia.

Mike Madern
sumber
Anda menambahkan judul di SEO > judul & meta > Jenis Posting ?
Mike Madern
Saya meningkatkan jawaban saya dengan solusinya :-)
Mike Madern
Saya kira Anda melewatkan suntingan posting terakhir saya: -PI menambahkan versi dengan $tag_id.
Mike Madern
1
Terima kasih banyak untuk kodenya, saya tidak akan pernah bisa mengetahuinya. Saya membuat beberapa perubahan kecil agar berfungsi dengan taksonomi kustom.
Mattvic
Ini bagus. Saya harus menggunakan get_queried_object()->term_id, alih-alih get_query_var(), karena yang pertama mengembalikan id, yang terakhir mengembalikan siput, membuat kode melempar pemberitahuan "indeks tidak terdefinisi". Juga, berhati-hati untuk memeriksa apakah ada yang sesuatu yang ditetapkan pada $meta['post_tag|category'], karena Anda akan mendapatkan indeks pemberitahuan terdefinisi juga. (WP 4.2.2, btw)
cabgfx
5

Pada halaman arsip di loop posting tambahkan baris kode berikut untuk membuatnya berfungsi

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

Katakan apakah itu berfungsi untuk Anda atau saya akan memberikan solusi lain.

Vinod Dalvi
sumber
Sayangnya itu tidak berhasil. Ini menunjukkan judul SEO dari posting pertama dalam arsip. Saya mungkin harus menyelami DB untuk melihat di mana data ini disimpan.
Mattvic
Apakah Anda menggunakannya dalam lingkaran? Bisakah kamu tunjukkan kodenya?
Vinod Dalvi
Saya telah menambahkan kode saya. Tidak yakin apakah saya menjelaskan bahwa saya ingin menampilkan judul halaman, bukan judul setiap posting di loop.
Mattvic
Inilah yang saya cari. Output judul SEO dalam loop. Juga, saya mengganti get_the_ID () dengan $ post-> ID
gerbz
ini menyelamatkan hidupku. Bagus ..
Mukii kumar
0

Mendapatkan kata kunci fokus untuk kategori dan tag

Untuk mendapatkan kata kunci fokus Kategori atau Tag secara terprogram, Anda dapat menggunakan salah satu dari dua metode ini:

            /** 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'];
                }
            }

Ini pada dasarnya adalah pendekatan yang digunakan oleh Mike di akhir jabatannya.

atau

            /** 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' );
                }
            }

Saya cenderung memilih pendekatan kedua karena dengan cara ini saya tidak perlu mengambil atau peduli tentang mendapatkan opsi meta sendiri.

Dalam Anda functions.php, Anda mungkin ingin menguji if class_exists( 'WPSEO_Taxonomy_Meta' )dan kemudian mungkin membungkus fungsi Yoast menjadi fungsi Anda sendiri, agar aman jika Anda pernah berhenti menggunakan Yoast SEO di telepon.

Beberapa latar belakang

Seperti disebutkan dalam pertanyaan awal, sesuatu seperti get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);tidak akan berfungsi untuk kategori dan halaman (tidak akan menghasilkan apa-apa.)

Jadi mengapa demikian?

Itu karena, untuk kategori dan tag, kata kunci fokus disimpan di tempat lain dalam database. Alih-alih disimpan di dalam wp_postmetameja seperti biasa, itu terkubur jauh di dalam wp_optionsmeja, sebagai objek JSON.

Metode di atas mari kita mengakses nilai-nilai ini.


Akhirnya, jika Anda seperti saya dan tidak dapat mengingat nama taksonomi (misalnya: tidak jelas mengapa tag menggunakan taksonomi post_tagdan bukan hanya tag, cukup periksa URL ketika Anda mengedit kategori atau tag: itu akan menampilkan …taxonomy=category…atau sejenisnya.

Fabien Snauwaert
sumber
0

Balas Mendapatkan kata kunci fokus untuk kategori dan tag

// itu bekerja terima kasih
// dengan api istirahat

dapatkan / wp-json / wp / v2 / kategori? slug =slug_name

plugin.in menggunakan Metode 1

ubah jalur

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

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

Chaiiz Rataphan
sumber