Create a gist now

Instantly share code, notes, and snippets.

Embed
Display Primary Category (Yoast's WordPress SEO)
<?php
// SHOW YOAST PRIMARY CATEGORY, OR FIRST CATEGORY
$category = get_the_category();
$useCatLink = true;
// If post has a category assigned.
if ($category){
$category_display = '';
$category_link = '';
if ( class_exists('WPSEO_Primary_Term') )
{
// Show the post's 'Primary' category, if this Yoast feature is available, & one is set
$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 );
} else {
// Yoast Primary category
$category_display = $term->name;
$category_link = get_category_link( $term->term_id );
}
}
else {
// Default, display the first category in WP's list of assigned categories
$category_display = $category[0]->name;
$category_link = get_category_link( $category[0]->term_id );
}
// Display category
if ( !empty($category_display) ){
if ( $useCatLink == true && !empty($category_link) ){
echo '<span class="post-category">';
echo '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
echo '</span>';
} else {
echo '<span class="post-category">'.htmlspecialchars($category_display).'</span>';
}
}
}
?>
@Ikubod

This comment has been minimized.

Show comment
Hide comment
@Ikubod

Ikubod Dec 28, 2016

Saved my tush. Thanks for this!

Ikubod commented Dec 28, 2016

Saved my tush. Thanks for this!

@sawwd

This comment has been minimized.

Show comment
Hide comment
@sawwd

sawwd Mar 13, 2017

Thank you :)

sawwd commented Mar 13, 2017

Thank you :)

@brainbrian

This comment has been minimized.

Show comment
Hide comment
@brainbrian

brainbrian Jun 1, 2017

I'm surprised Yoast doesn't reorder the array and just make the primary the first item in the array. It seems to take when using categories in post URLs but not when doing a standard get_the_category.

Thanks for this gist!

brainbrian commented Jun 1, 2017

I'm surprised Yoast doesn't reorder the array and just make the primary the first item in the array. It seems to take when using categories in post URLs but not when doing a standard get_the_category.

Thanks for this gist!

@anastahery

This comment has been minimized.

Show comment
Hide comment
@anastahery

anastahery Jun 18, 2017

how can i display a parent category of the “Primary” Category??

how can i display a parent category of the “Primary” Category??

@MathieuLopes

This comment has been minimized.

Show comment
Hide comment
@MathieuLopes

MathieuLopes Dec 18, 2017

Thank you!
Great job!

Thank you!
Great job!

@zenaul

This comment has been minimized.

Show comment
Hide comment
@zenaul

zenaul May 21, 2018

It's helped me out.
Thank you :)

zenaul commented May 21, 2018

It's helped me out.
Thank you :)

@sakrow

This comment has been minimized.

Show comment
Hide comment
@sakrow

sakrow Jun 13, 2018

Great Job, more useful!

sakrow commented Jun 13, 2018

Great Job, more useful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment