Получить родительский элемент пользовательской таксономии в фрагменте переменной Yoast - PullRequest
1 голос
/ 03 мая 2020

У меня есть каталог WordPress веб-сайт, который использует пользовательскую таксономию. Иерархия настроена следующим образом: страна> штат> город. Когда я добавляю пользовательскую таксономию в Yoast для названия SEO и мета-описания, она тянет только в городе. Я также хочу вытащить состояние, создав новый фрагмент переменной Yoast, который будет захватывать родительский элемент (являющийся состоянием) текущего URL-адреса пользователя.

Это то, что у меня есть в моих функциях. php файл, но он приносит в страну. Так что в настоящее время в него входит родитель верхнего уровня. Как я могу получить непосредственный родитель, который был бы государством?

function get_state() {
$myterms = get_terms( array( 'taxonomy' => 'w2dc-location', 'parent' => 0 ) );
  foreach($myterms as $term) {
    return $term->name;
  }
}

function register_custom_yoast_variables() {
   wpseo_register_var_replacement( '%%state%%', 'get_state', 'advanced', 'some help text' );
}

add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');

ссылка на сайт: https://www.helpingmehear.com/find-an-expert/hearing-aids/united-states/colorado/castle-rock/accent-on-hearing/

1 Ответ

1 голос
/ 03 мая 2020

Это решение, которое возвращает город и штат, поскольку вы выбрали только одну таксономию (город) и этот штат является прямым родителем города. Я думаю, что вместо get_terms() вы хотите использовать get_the_terms()

function get_state() {
    global $post;
    // Get the terms for the current post in your tax
    $myterms = get_the_terms( $post->ID, 'w2dc-location' );
    // Check if parent exists
    if ($myterms[0]->parent !== 0){
        // Get the term object
        $parent = get_term_by('id', $myterms[0]->parent, 'w2dc-location');
        return $parent->name;
    }
}

function register_custom_yoast_variables() {
   wpseo_register_var_replacement( 'state', 'get_state', 'advanced', 'some help text' );
}
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');

Использование в поле заголовка Yoast ...

%%category%% %%state%%

...