Wtyczka SEO WordPress firmy Yoast pozwala użytkownikom dodawać tytuły SEO i opisy meta do stron archiwum terminów taksonomicznych. Są one następnie używane w nagłówku dokumentu.
Próbuję wyświetlić tytuł SEO warunków taksonomii jako H1 w moim szablonie archiwum taksonomii.
Aby to zrobić w poście, typie postu lub stronie jest łatwe:
echo get_post_meta($post->ID, '_yoast_wpseo_title', true);
W przypadku szablonów archiwów to nie działa.
Czy ktoś wie, jak to zrobić?
Przykład zrzutu ekranu
To jest tytuł określonego terminu tagu. Próbuję wyświetlić ten tytuł - ale potem dla niestandardowego terminu systematyki - w moich szablonach archiwum.
Kod końcowy
Tego właśnie użyłem w swoim archive.php
szablonie. Działa, jeśli używasz niestandardowej taksonomii. W przypadku tagów lub kategorii zapoznaj się z odpowiedzią Mike Madern poniżej.
<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>
źródło
$tag_id
.get_queried_object()->term_id
,get_query_var()
ponieważ pierwszy zwraca identyfikator, drugi zwraca ślimak, przez co kod generuje powiadomienia o „niezdefiniowanym indeksie”. Upewnij się również, czy coś jest ustawione$meta['post_tag|category']
, ponieważ otrzymasz również niezdefiniowane indeksy. (WP 4.2.2, btw)Na stronie archiwum w pętli post dodaj następujący wiersz kodu, aby działał
Powiedz mi, czy to działa dla Ciebie, czy dam inne rozwiązanie.
źródło
Uzyskiwanie słowa kluczowego dla kategorii i tagów
Aby programowo uzyskać słowo kluczowe Focus kategorii lub tagu, możesz użyć jednej z dwóch metod:
Jest to w zasadzie podejście zastosowane przez Mike'a na końcu jego postu.
lub
Wolę drugie podejście, ponieważ w ten sposób nie muszę samodzielnie pobierać opcji meta.
W twoim przypadku
functions.php
możesz chcieć przetestować,if class_exists( 'WPSEO_Taxonomy_Meta' )
a następnie zawinąć funkcję Yoast we własną funkcję, aby być bezpiecznym na wypadek, gdybyś kiedykolwiek przestał używać Yoast SEO.Trochę tła
Jak wspomniano w pierwotnym pytaniu, coś takiego
get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);
nie będzie działać dla kategorii i stron (nic nie zwróci).Dlaczego tak jest?
Jest tak, ponieważ dla kategorii i tagów słowo kluczowe focus jest zapisywane w innym miejscu w bazie danych. Zamiast
wp_postmeta
jak zwykle zapisywany w tabeli, jest zakopany głęboko wwp_options
stole, jako obiekt JSON.Powyższe metody pozwalają nam uzyskać dostęp do tych wartości.
Wreszcie, jeśli jesteś podobny do mnie i nie pamiętasz nazwy taksonomii (np .: nie jest oczywiste, dlaczego tagi używają taksonomii,
post_tag
a nie tylkotag
, po prostu sprawdź adresy URL podczas edycji kategorii lub tagu: pokaże się…taxonomy=category…
lub jak.źródło
Odpowiedz Uzyskiwanie słowa kluczowego dla kategorii i tagów
// działa, dziękuję
// z resztą interfejsu API
get / wp-json / wp / v2 / Categories? slug =
slug_name
plugin.in użyj Metoda 1
zmień linię
$meta['post_tag'][$tag->term_id]['wpseo_focuskw'];
$meta['category'][$param_post_id]['wpseo_focuskw'];
źródło