WordPress Shorcode显示层次分类[子项,父项]

时间:2021-01-02 作者:neosan

在wordpress中显示分类法的父级时,我有一个小问题。(CPT=property and tax = property_city)

我做了一些研究,想知道该怎么办。

但我不太明白如何显示它们。

我给你举个例子,你会很快明白的。

enter image description here

what I have (not actual shortcode or any code! Just dynamic tag term showing taxonomy without parent)

enter image description here

what I want to do

enter image description here

理想的做法是在短代码中显示它们,所以我会在需要的地方添加它们。

我测试了这个方法,但显然不起作用。。

我想我还是不明白。。

function taxonomy_hierarchy() {
    global $post;
    $taxonomy = \'property_city\'; //Put your custom taxonomy term here
    $terms = wp_get_post_terms( $post->ID, $taxonomy );
    foreach ( $terms as $term )
        {
    if ($term->parent == 0) // this gets the parent of the current post taxonomy
    {$myparent = $term;}
        }
    echo \'\'.$myparent->name.\'\';
    // Right, the parent is set, now let\'s get the children
    foreach ( $terms as $term ) {
        if ($term->parent != 0) // this ignores the parent of the current post taxonomy
        { 
        $child_term = $term; // this gets the children of the current post taxonomy
        echo \'\'.$child_term->name.\'\';
        }
    }   
}

add_shortcode( \'child-parent\', function () {

    $content = "echo \'\'.$child_term->name.\'\' echo \'\'.$myparent->name.\'\'";

    return $content;
} );
此处找到的代码:link

UPDATE 04/01/2021

感谢StefI对我的循环和单个帖子进行了测试,效果很好。

function taxonomy_hierarchy() {
global $post;
$post_id = $post->ID;
$return = \'\';
$terms = wp_get_post_terms( $post->ID, \'property_city\' ); //Put your custom taxonomy term here
foreach ( $terms as $term ) {
    // this gets the parent of the current post taxonomy
    
    
     //attempt to make terms clickable
    $term_link = get_term_link( $term );
    
    if ($term->parent != 0) {
        $return .= $term->name. \', \' . get_term( $term->parent, \'property_city\' )->name;
    } else {
        $return .= $term->name;
    }
}
return $return;
}
add_shortcode( \'city-area\', \'taxonomy_hierarchy\' );
最终理解了如何进行短代码及其背后的逻辑。当我试图理解php背后的逻辑时,我忘了提到术语clickable get_term_link 我应该可以enable and disable 他们(父母或子女或两者)使用//"E;(可选)How to do that ?

我已经有了这段代码,它可以将它们重定向到我的自定义请求(例如elementor builder内部),因为快捷码不可单击,所以对它们不起作用。。

add_filter (\'term_link\', function ($ termlink, $ term, $ taxonomy) {
// taxonomy city
if (\'property_city\' == $ taxonomy) {
         $ termlink = trailingslashit (get_home_url ()). \'property /?_city =\'. $ term-> slug;
     }
     return $ termlink;
}, 10, 3);
想了想,如果有一天我需要这样的东西。。。

enter image description here

enter image description here如何制作flexible 并显示可用的术语hierarchically?我想这个 WordPress: Get taxonomy hierarchy, including children 与我的问题有关联吗?

但我无法拼凑出谜团

谢谢你的耐心

1 个回复
最合适的回答,由SO网友:Stef 整理而成

您的功能taxonomy_hierarchy() 实际上没有链接到短代码。您的功能taxonomy_hierarchy() 也是不正确的短代码函数。您可以找到如何创建适当的短代码here.

短代码函数还必须返回,不要使用echo。

这就是你的功能taxonomy_hierarchy 应该看起来有点像。我根据您的需要更改了代码:

function taxonomy_hierarchy() {

global $post;

$return = \'\';

$terms = wp_get_post_terms( $post->ID, \'property_city\' );

foreach ( $terms as $term ) {

    // this gets the parent of the current post taxonomy
    if ( $term->parent != 0 ) {

        $return .= $term->name \', \' . get_term( $term->parent, \'property_city\' )->name;

    } else {

        $return .= $term->name;

    }

}

return $return;

}
然后将其添加到函数中以创建短代码taxonomy_hierarchy().

add_shortcode( \'child-parent\', \'taxonomy_hierarchy\' );
使用短代码前端时,可以使用[child-parent]. 您可以使用的后端echo do_shortcode( \'[child-parent]\' );

相关推荐

I receive taxonomy id

您好,我想从字段中获取值,但我收到的id代码如下:function add_product_column( $columns ) { //add column $columns[\'new_column\'] = __( \'New column\', \'woocommerce\' ); return $columns; } add_filter( \'manage_edit-product_columns\', \'add_pr