显示先按自定义分类再按另一自定义分类排序的所有自定义帖子类型帖子

时间:2018-03-08 作者:HazeHybrid

很抱歉混淆了标题。不知道如何更好地描述它。我想显示所有商店,首先按其类别排序,然后在其中按其位置排序。

我有自定义帖子类型“Shop”,两个自定义分类“Shop Category”,“Shop Location”。

示例我希望它如何显示:

伦敦01号鞋店02号鞋店05号鞋店06号鞋店伦敦11号鞋店12号鞋店16号鞋店鞋,电子产品,(…)-分类法#1

伦敦,东京,(…)-分类法#2

01号车间,(…)-自定义帖子类型

到目前为止,按一种分类法进行排序显示是可行的。它工作得很好,但我还需要一个级别。

<?php
$custom_terms = get_terms(\'shop_category\');
foreach ($custom_terms as $custom_term) {

wp_reset_query();
$args = array(
    \'post_type\' => \'shop\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'shop_category\',
            \'field\' => \'slug\',
            \'terms\' => $custom_term->slug,
        ),
    ),
);

$loop = new WP_Query($args);
if($loop->have_posts()) {
    echo \'<div class="box-category">\'.$custom_term->name.\'</div>\';

    while($loop->have_posts()) : $loop->the_post();
        echo \'<a href="\'.get_permalink().\'">\'.get_the_title().\'</a><br>\';
    endwhile;
}

}
?>
提前感谢您的指导。

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

首先获取类别列表和位置列表。然后循环遍历每个类别。在每个类别中,通过具有当前类别和当前位置的位置和查询帖子列表循环,并输出列表:

$categories = get_terms( array(
    \'taxonomy\' => \'shop_category\',
) );

$locations = get_terms( array(
    \'taxonomy\' => \'shop_location\',
) );

foreach ( $categories as $category ) {
    echo \'<div class="box-category">\' . $category->name . \'</div>\';

    foreach ( $locations as $location ) {
        $shops = new WP_Query( array(
            \'post_type\' => \'shop\',
            \'tax_query\' => array(
                array(
                    \'terms\'    => $category->term_id,
                    \'taxonomy\' => \'shop_category\',
                ),
                array(
                    \'terms\'    => $location->term_id,
                    \'taxonomy\' => \'shop_location\',
                ),
            ),
        ) );

        if( $shops->have_posts() ) {
            echo \'<div class="box-location">\' . $location->name . \'</div>\';

            while ( $shops->have_posts() ) : $shops->the_post();
                echo \'<a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a><br>\';
            endwhile;
        }

        wp_reset_postdata();
    }
}

结束

相关推荐

从gensis_loop中删除gensis_404挂接

我正在使用genesis主题,我想定制一个404页面。为此,我希望删除默认的404钩子并实现我自己的钩子。在我的插件函数中。php我添加了我的操作:add_action( \'genesis_loop\', \'genesis_customizations_404\' ); 在函数中,我添加了删除:function genesis_customizations_404() { echo \'test\'; remove_action(\'genesis_loop\',