Arşiv şablonunda Yoast WordPress SEO başlığını görüntüle


14

Yoast tarafından WordPress SEO eklentisi, kullanıcıların taksonomi terimi arşiv sayfalarına SEO başlıkları ve meta açıklamalar eklemelerine izin verir. Bunlar daha sonra belgenin başında kullanılır.

Taksonomi arşiv şablonunda H1 olarak taksonomi terimlerinin SEO başlığını göstermeye çalışıyorum.

Bir gönderide, gönderi türünde veya sayfada bunu yapmak kolaydır:

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

Arşiv şablonlarında bu çalışmaz.

Herkes bunu işe almak için nasıl biliyor mu?

Ekran görüntüsü örneği

Bu, belirli bir etiket teriminin başlığıdır. Arşiv şablonumda bu başlığı görüntülemeye çalışıyorum - ancak özel bir sınıflandırma terimi için -.

Etiket arşivi düzenleme ekranı

Son kod

Bunu archive.phpşablonumda kullandım. Özel bir sınıflandırma kullanıyorsanız çalışır. Etiketler veya kategoriler için aşağıdaki Mike Madern'in cevabına bir göz atın.

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

Yanıtlar:


19

Arşiv SEO başlıklarını edinin

Özel Yazı Türü arşiv başlığı tanımladıysanız, bunu şu şekilde alabilirsiniz:

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

echo apply_filters( 'the_title', $title );

POST_TYPEKendi Özel Mesaj Türünüzle değiştirmeyi unutmayın .

Tüm wpseo_titledeğişkenleri görüntülemek için şunları kullanabilirsiniz:

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

Böylece ihtiyacınız olanı kolayca seçebilirsiniz.

Terim SEO başlıklarını edinin

Kategoriler

Bu kodu kullanarak, tanımladığınız SEO başlığını alabilirsiniz:

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

Etiketler

Bu kodu kullanarak, tanımladığınız SEO başlığını alabilirsiniz:

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

Tüm wpseo_taxonomy_metadeğişkenleri görüntülemek için şunları kullanabilirsiniz:

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

Bu şekilde yapıyı ve mevcut değişkenleri görebilirsiniz.


Başlığı SEO > başlıklar ve metas > Yazı Türleri'ne eklediniz mi?
Mike Madern

Çözüm ile cevabımı geliştirdim :-)
Mike Madern

Sanırım son yazdığım düzenlemeyi kaçırdınız: -PI ile bir sürüm ekledim $tag_id.
Mike Madern

1
Kod için çok teşekkürler, bunu asla anlayamam. Özel sınıflandırmalarla çalışmasını sağlamak için birkaç küçük değişiklik yaptım.
Mattvic

Bu harika. Eski get_queried_object()->term_idyerine get_query_var()kimliği döndürür gibi yerine, kullanmak zorunda kaldı , ikincisi slug döndürür, kod "tanımsız dizin" bildirimleri atmak yapma. Ayrıca, orada olmadığını kontrol etmeye özen olduğu herhangi bir şey seti $meta['post_tag|category']size sıra tanımlanmamış endeks bildirimleri alırsınız gibi. (WP 4.2.2, btw)
cabgfx

5

Post loop'taki arşiv sayfasında çalışmasını sağlamak için aşağıdaki kod satırını ekleyin

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

Bana bunun işe yarayıp yaramadığını söyle yoksa başka bir çözüm sunacağım.


Maalesef bu işe yaramadı. Arşivdeki ilk gönderinin SEO başlığını gösterir. Muhtemelen bu verilerin nerede depolandığını görmek için DB içine dalmak zorunda kalacak.
Mattvic

Döngüde mi kullanıyorsunuz? Bana kodu gösterebilir misin?
Vinod Dalvi

Kodumu ekledim. Döngüdeki her yazının başlığını değil, sayfa başlığını çıktılamak istediğimi açıkladım.
Mattvic

Tam da aradığım şey buydu. Döngüdeki SEO başlığını çıktılar. Ayrıca, get_the_ID () yerine $ post-> ID
gerbz

bu hayatımı kurtarıyor. iyi ..
Mukii kumar

0

Alma odak anahtar kelime kategorileri ve etiketleri için

Bir Kategori veya Etiketin odak anahtar kelimesini programlı olarak almak için aşağıdaki iki yöntemden birini kullanabilirsiniz:

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

Bu, Mike'ın görevinin sonunda kullandığı yaklaşımdır.

veya

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

İkinci yaklaşımı tercih etme eğilimindeyim çünkü bu şekilde meta seçeneği kendim elde etmekle ilgilenmem ya da umursamam gerekmiyor.

Gözlerinde farklı functions.php, sizin için test isteyebilir if class_exists( 'WPSEO_Taxonomy_Meta' )ve sonra belki durumda hiç satır aşağı Yoast SEO kullanarak durdurmak edildi güvende olmaya, kendinize ait bir functon içine Yoast işlevini sarın.

Bazı arka plan

Orijinal soruda belirtildiği gibi get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);, kategoriler ve sayfalar için işe yaramaz (hiçbir şey döndürmez.)

Öyleyse neden böyle?

Çünkü kategoriler ve etiketler için focus anahtar sözcüğü veritabanının başka bir yerine kaydedilir. wp_postmetaHer zamanki gibi tablonun içine kaydedilmek yerine, tablonun derinliklerine wp_optionsbir JSON nesnesi olarak gömülür .

Yukarıdaki yöntemler bu değerlere erişmemizi sağlar.


Eğer benim gibi ve taksonomilerin adını hatırlayamıyorum Son olarak, eğer (örneğin: etiketleri sınıflandırmayı kullanmamın nedeni değil açıktır post_tagve sadece tagbir kategori veya etiket düzenlerken, sadece URL'ler göz atın: o göstereceğiz …taxonomy=category…ya gibi.


0

Yanıtla Kategoriler ve etiketler için odak anahtar kelimesini alma

// teşekkür ederim
// dinlenme api ile çalışır

get / wp-json / wp / v2 / category? slug =slug_name

plugin.in Yöntem 1'i kullanın

hattı değiştir

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

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.