In Genesis Slack chat, a user asked:
I installed Portfolio Post Type plugin. I am unable to understand why the footer `entry-meta` does not show up?
By default, linked taxonomy terms do not appear in the entry footer in Genesis for CPTs, both in single and archive views.
We can use [post_terms]
shortcode inside a function hooked to genesis_post_meta
to show these.
// Show Portfolio Type hyperlinked terms (categories and tags)
add_filter( 'genesis_post_meta', 'sk_post_meta_filter' );
function sk_post_meta_filter( $post_meta ) {
if ( 'portfolio' == get_post_type() ) {
$post_meta = '[post_terms taxonomy="portfolio_category"][post_terms taxonomy="portfolio_tag" before="Tagged With: "]';
}
return $post_meta;
}
where portfolio
is the CPT with associated portfolio_category
and portfolio_tag
custom taxonomies.
The resulting HTML output will be like this:
and the view on the web page:
If you’d like to replace the common class, entry-terms
with entry-categories
and entry-tags
for your taxonomies, in this case, say for portfolio_category
and portfolio_tag
respectively, we can create a custom shortcode based off of post_terms
and achieve this like so:
add_shortcode( 'portfolio_terms', 'custom_portfolio_terms_shortcode' ); | |
/** | |
* Produces the linked post taxonomy terms list. | |
* | |
* Supported shortcode attributes are: | |
* after (output after link, default is empty string), | |
* before (output before link, default is 'Tagged With: '), | |
* sep (separator string between tags, default is ', '), | |
* taxonomy (name of the taxonomy, default is 'category'). | |
* | |
* Output passes through `genesis_post_terms_shortcode` filter before returning. | |
* | |
* @since 1.6.0 | |
* | |
* @param array|string $atts Shortcode attributes. Empty string if no attributes. | |
* @return string Output for `post_terms` shortcode, or empty string on failure to retrieve terms. | |
*/ | |
function custom_portfolio_terms_shortcode( $atts ) { | |
$defaults = array( | |
'after' => '', | |
'before' => __( 'Filed Under: ', 'genesis' ), | |
'sep' => ', ', | |
'taxonomy' => 'category', | |
); | |
/** | |
* Post terms shortcode defaults. | |
* | |
* Allows the default args in the post terms shortcode function to be filtered. | |
* | |
* @since 2.0.0 | |
* | |
* @param array $defaults The default args array. | |
*/ | |
$defaults = apply_filters( 'genesis_post_terms_shortcode_defaults', $defaults ); | |
$atts = shortcode_atts( $defaults, $atts, 'post_terms' ); | |
$terms = get_the_term_list( get_the_ID(), $atts['taxonomy'], $atts['before'], trim( $atts['sep'] ) . ' ', $atts['after'] ); | |
if ( is_wp_error( $terms ) ) | |
return ''; | |
if ( empty( $terms ) ) | |
return ''; | |
if ( genesis_html5() ) | |
switch ( $atts['taxonomy'] ) { | |
case 'portfolio_tag': | |
$output = sprintf( '<span %s>', genesis_attr( 'entry-tags' ) ) . $terms . '</span>'; | |
break; | |
default: | |
$output = sprintf( '<span %s>', genesis_attr( 'entry-categories' ) ) . $terms . '</span>'; | |
break; | |
} | |
else | |
$output = '<span class="terms">' . $terms . '</span>'; | |
return apply_filters( 'genesis_post_terms_shortcode', $output, $terms, $atts ); | |
} | |
// Show Portfolio Type hyperlinked terms (categories and tags) | |
add_filter( 'genesis_post_meta', 'sk_post_meta_filter' ); | |
function sk_post_meta_filter( $post_meta ) { | |
if ( 'portfolio' == get_post_type() ) { | |
$post_meta = '[portfolio_terms taxonomy="portfolio_category"][portfolio_terms taxonomy="portfolio_tag" before="Tagged With: "]'; | |
} | |
return $post_meta; | |
} |
Source: genesis/lib/shortcodes/post.php
Hi Sri,
Thank you for the help. 🙂
[…] Reference: https://sridharkatakam.com/displaying-cpt-taxonomy-terms-genesis-entry-footer/ […]