Получить основную категорию, если выбрано более одного?
В Wordpress, как я могу вернуться к основной категории?
Я использую следующий цикл, если все три отмечены, то он просто возвращается к последнему члену. Я хочу убедиться, что это основная категория.
<?php $term_list = wp_get_post_terms($post->ID, 'category', array("fields" => "names"));
foreach ($term_list as $term) {
$name = $term;
} ?>
Ответы
Ответ 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