Получить основную категорию, если выбрано более одного?

В Wordpress, как я могу вернуться к основной категории?

Я использую следующий цикл, если все три отмечены, то он просто возвращается к последнему члену. Я хочу убедиться, что это основная категория.

<?php $term_list = wp_get_post_terms($post->ID, 'category', array("fields" => "names"));
foreach ($term_list as $term) {
    $name = $term;
} ?>

enter image description here

Ответы

Ответ 1

Это не встроенная функция WordPress, а функция Yoast SEO (см. Здесь).

Вы можете проверить первичный статус следующим образом:

<?php
$term_list = wp_get_post_terms($post->ID, 'category', ['fields' => 'all']);
foreach($term_list as $term) {
   if( get_post_meta($post->ID, '_yoast_wpseo_primary_category',true) == $term->term_id ) {
     // this is a primary category
   }
}
?>

Если вы используете пользовательские таксономии, используйте meta_key

_yoast_wpseo_primary_CUSTOM_TAXONOMY

вместо этого.

Ответ 2

Если вы используете плагин "SEO Framework" вместо "Yoast SEO":

$taxonomy = 'category'; 

$post_id = get_the_ID();

$terms = wp_get_post_terms($post_id, $taxonomy, ['fields' => 'all']);

$primary_term = intval(get_post_meta( $post_id, '_primary_term_' . $taxonomy, true ));

foreach($terms as $term) {

   if( $primary_term == $term->term_id ) {

        // this is a primary category
   }
}

Ссылки:

https://github.com/sybrew/the-seo-framework/blob/4262ea703eaaa50813d8cd4ac13f4537b5c6a4cc/inc/classes/post-data.class.php#L633