如果选择了多个类别,则获取主要类别?

2022-08-30 18:12:20

在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框架”插件而不是“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


推荐