Получить родителя пользовательской таксономии в фрагменте переменной Yoast

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

Это то, что у меня есть в моем файле functions.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/


person JenMPB    schedule 03.05.2020    source источник


Ответы (1)


Это решение вернет город и штат, учитывая, что вы выбрали только одну таксономию (город) и этот штат является непосредственным родителем города. Я думаю, что вместо 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%%

person Howard E    schedule 03.05.2020
comment
Работал идеально. Огромное спасибо! - person JenMPB; 03.05.2020