As funções e a classe necessária para recuperar a categoria principal de um Post no WordPress.

O código completo para retornar a categoria principal de um Post já com uma tratativa para erros.
$wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
$term = get_term( $wpseo_primary_term );
if (is_wp_error($term)) {
// Default to first category (not Yoast) if an error is returned
$category_display = $category[0]->name;
$category_link = get_category_link( $category[0]->term_id );
$category_id = $category[0]->term_id;
} else {
// Yoast
$category_display = $term->name;
$category_link = get_category_link( $term->term_id );
$category_id = $term->term_id;
}
var_dump( $category_id );
Entendendo o código
WordPress não possuí a funcionalidade natividade para que você possa definir qual é a categoria principal de um Post.
O máximo que você consegue é retornar a primeira categoria de todas ao qual o Post está relacionado.
A categoria principal é um recurso adicionado pelo plugin Yoast SEO.
Utilizando a classe WPSEO_Primary_Term conseguimos pegar a categoria principal do post.
new WPSEO_Primary_Term( 'category', get_the_id() );
3 comentários sobre “Recuperar a categoria principal de um Post – WordPress”