显示与自定义分类相关的CPT

时间:2021-07-19 作者:srack

我有两种自定义的帖子类型:“quot;店面位置“;和;“服务”;

这些通过自定义分类法链接”;“位置”;

我正在为“创建帖子模板”;店面位置“;并希望显示“的列表”;“服务”;与任何给定店面关联的帖子。

我正在努力实现的目标:

“A”;店面位置“;伦敦邮政,分类为;“伦敦”;(“位置”分类法)。我想去伦敦。”;店面位置“;post显示全部“;“服务”;也被分类为;“伦敦”;(“位置”分类法)。然后,用户可以单击每个服务来阅读相关内容,因为这些都是帖子类型。

我正在尝试获取当前邮政(伦敦)的分类信息,并使用税务查询查找与该特定伦敦邮政共享相同分类的所有服务。

注意:这是针对Elementor中的WP\\U查询过滤器,因此Elementor查询的额外代码来自他们的教程here.

我是个新手,所以这里可能有个新手问题。我一直在尝试从stack exchange上的其他代码示例中找出这一点。如果有任何帮助,我将不胜感激!

add_action( \'elementor/query/my_filter\', function( $query ) {
//get the storefront-location post\'s location
   $custom_terms = wp_get_post_terms($post->ID, \'location\');

if( $custom_terms ){

    //hold tax query parameters
    $tax_query = array();


    // loop through locations and build a tax query
    foreach( $custom_terms as $custom_term ) {

        $tax_query[] = array(
            \'taxonomy\' => \'location\',
            \'field\' => \'slug\',
            \'terms\' => $custom_term->slug,
        );

    }

    // put all the WP_Query args together
    $args = array( \'post_type\' => \'services\',
                    \'posts_per_page\' => -1,
                    \'tax_query\' => $tax_query );

    // finally run the query
    $loop = new WP_Query($args);

    if( $loop->have_posts() ) {

        while( $loop->have_posts() ) : $loop->the_post(); ?>

        <div class="listing-title"><?php the_title(); ?></div>     
        <?php endwhile;
    }

    wp_reset_query();

}
});
编辑:澄清一下,当添加到函数时,上面显示的代码似乎没有任何作用。php和在Posts小部件上使用“my\\u filter”时。因此,《伦敦邮报》显示了“所有”;“服务”;而不仅仅是按位置分类的服务”;伦敦"E;

1 个回复
SO网友:ppfeufer

几年前我也在做类似的事情,下面是我所做的,也许会有帮助。。。(已更改为您的用例)

$result = new WP_Query([
    \'post_type\' => \'location\',
    \'orderby\' => \'name\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => -1, // all of them on one page
    \'tax_query\' => [
        [
            \'taxonomy\' => \'services\',
            \'field\' => \'id\',
            \'terms\' => $custom_term->term_id,
            \'include_children\' => true
        ]
    ]
]);
所以你已经很接近了。我注意到的是,你使用$custom_term->slug 但它应该是$custom_term->term_id 据我所知。

相关推荐

Bulk edit for custom taxonomy

要创建如图所示的区域,我应该在下面进行什么样的更改<?php /* Portfolio Custom Post Type */ $args = array( \"label\" => \"Şarkı Sözü\", \"singular_label\" => \"Şarkı Sözü Kategorisi\", \'public\'