我看到这个问题自去年以来受到了很多关注,我想用正确的方式回答这个问题。
如果已安装,wordpress中没有主类别Yoast SEO 插件,则新功能将出现在Single Posts 在管理区域中选择类别,以选择主要类别。
要获得主要类别,可以使用我提供的以下函数:
if ( ! function_exists( \'get_primary_taxonomy_id\' ) ) {
function get_primary_taxonomy_id( $post_id, $taxonomy ) {
$prm_term = \'\';
if (class_exists(\'WPSEO_Primary_Term\')) {
$wpseo_primary_term = new WPSEO_Primary_Term( $taxonomy, $post_id );
$prm_term = $wpseo_primary_term->get_primary_term();
}
if ( !is_object($wpseo_primary_term) && empty( $prm_term ) ) {
$term = wp_get_post_terms( $post_id, $taxonomy );
if (isset( $term ) && !empty( $term ) ) {
return wp_get_post_terms( $post_id, $taxonomy )[0]->term_id;
}
return \'\';
}
return $wpseo_primary_term->get_primary_term();
}
}
首先,它将检查Yoast SEO是否正在安装和激活,然后它将尝试获取主要类别。如果没有安装Yost,那么它将获取所有类别并返回第一个类别。
请注意,此函数也适用于具有自定义分类法的自定义帖子类型。
如果要获取可以使用的类别(术语)对象,此函数将在末尾返回类别(术语)IDget_term($ID, $taxonomy)
并传入ID。
新建编辑:
如果您正在使用Rank Math,并且希望使用此插件获取主分类集,那么以下代码可能会有所帮助:
if (class_exists(\'RankMath\')) {
$primary_tax = get_post_meta( $post_id, \'rank_math_primary_category\', true );
if (!empty($primary_tax)) {
return get_term( $primary_tax, $taxonomy );
}
}
我建议在Yoast之后再加上这个
if
陈述