我的网站有3种自定义帖子类型,每种帖子类型都有一个唯一的自定义分类法。
我想在我的单个帖子页面中显示这些分类法,并且只显示与该帖子类型相关的分类法,而不是其他分类法,并且没有类别和标记。
将\\u builtin设置为false可以解决类别和标记的问题,但我不知道如何正确显示这些自定义分类法,我的帖子页面会显示所有帖子类型的所有自定义分类法。
我对php不太了解,试图从多个网站(包括本网站)中找到代码,这是我迄今为止的代码:
// get taxonomies terms links
function custom_taxonomies_terms_links() {
global $post, $post_id;
// get post by post id
$post = &get_post($post->ID);
// get post type by post
$post_type = $post->post_type;
// get post type taxonomies
$args = array(
\'public\' => true,
\'_builtin\' => false
);
$output = \'names\'; // or objects
$operator = \'and\'; // \'and\' or \'or\'
$taxonomies = get_taxonomies( $args, $output, $operator );
$out = "<ul>";
foreach ($taxonomies as $taxonomy) {
$out .= "<li>".$taxonomy.": ";
// get the terms related to post
$terms = get_the_terms( $post->ID, $taxonomy );
if ( !empty( $terms ) ) {
foreach ( $terms as $term )
$out .= \'<a href="\' .get_term_link($term->slug, $taxonomy) .\'">\'.$term->name.\'</a> \';
}
$out .= "</li>";
}
$out .= "</ul>";
return $out;
}
任何帮助都将不胜感激。tnx公司
最合适的回答,由SO网友:Ankita Tanti 整理而成
尝试以下代码
function custom_taxonomies_terms_links()
{
global $post, $postid;
$custom_taxonomies = get_post_taxonomies( $post );
if($custom_taxonomies)
{
foreach ($custom_taxonomies as $custom_taxonomy)
{
// get post type taxonomies
$args = array(
\'public\' => true,
\'_builtin\' => false
);
$args[\'name\']=$custom_taxonomy;
$output = \'names\'; // or objects
$operator = \'and\'; // \'and\' or \'or\'
$taxonomies = get_taxonomies( $args, $output, $operator );
$out = "<ul>";
foreach ($taxonomies as $taxonomy)
{
$out .= "<li>".$taxonomy.": ";
// get the terms related to post
$terms = get_the_terms( $post->ID, $taxonomy );
if ( !empty( $terms ) ) {
foreach ( $terms as $term )
$out .= \'<a href="\' .get_term_link($term->slug, $taxonomy) .\'">\'.$term->name.\'</a> \';
}
$out .= "</li>";
}
$out .= "</ul>";
echo $out;
}
}
}
您可以根据需要在上述代码中修改HTML标记的位置。希望这对你有帮助!