Hiển thị các thuật ngữ phân loại CPT trong chân trang mục nhập Genesis

Trong cuộc trò chuyện Genesis Slack, một người dùng đã hỏi:

Tôi đã cài đặt plugin Portfolio Post Type. Tôi không thể hiểu tại sao footer entry-meta không hiển thị?

Theo mặc định, các thuật ngữ phân loại được liên kết không xuất hiện ở chân mục nhập trong Genesis cho CPTs, cả ở dạng xem đơn lẻ và dạng xem lưu trữ.

Chúng ta có thể sử dụng shortcode bên trong một hàm được nối để hiển thị những điều này.[post_terms] genesis_post_meta

// 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;

}

nơi portfolio là CPT với liên portfolio_categoryportfolio_tag tùy chỉnh phân loại.

Nếu bạn muốn thay thế lớp chung, bằng và cho các đơn vị phân loại của mình, trong trường hợp này, hãy nói cho và tương ứng, chúng tôi có thể tạo một mã ngắn tùy chỉnh dựa trên và đạt được điều này như sau:entry-terms entry-categories entry-tags portfolio_category portfolio_tag post_terms

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( '', genesis_attr( 'entry-tags' ) ) . $terms . '';
				break;

			default:
				$output = sprintf( '', genesis_attr( 'entry-categories' ) ) . $terms . '';
				break;
		}
	else
		$output = '' . $terms . '';

	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;

}