先按日期再按分类对自定义帖子进行排序

时间:2021-09-28 作者:Mario Andthee

我有这个问题已经有一个月了,我不知道如何解决这个问题:

我在一个网站上工作,在那里你可以查看我所在地区的文化活动。这只是为了让你知道我在说什么。mox-veranstaltungen.de

现在,对于后端,我进行了自定义查询,以输出给定日期范围内的事件列表。这些日期实际上是事件日期。(当这些事件发生时)在一个特定的日子里有几个事件。

$args = array(
    \'post_type\' =>  \'events\',
    \'numberposts\'   =>  20,
    \'meta_key\'  =>  \'date\',
    \'orderby\'   =>  \'meta_value_num\',
    \'order\'     =>  \'ASC\',
    \'meta_query\' => array(
        array(
            \'key\'       =>  \'date\',
            \'value\'     =>  array ($von,$bis),
            \'compare\'   =>  \'BETWEEN\',
            \'type\'      =>  \'NUMERIC\',
        ),
        )
日期值是用ACF生成的,对日期进行排序就可以了。

现在,每个事件都有一个分类术语,我称之为“eventtype”。我需要根据这些分类术语对特定日期的事件进行排序。

例如:

所有事件都发生在7月4日,所有事件都有分类术语“音乐”的出现

$allGenres = get_terms( array(\'taxonomy\' => \'eventtype\',\'fields\'  =>\'ids\',\'hide_empty\' => false));

$args = array(
    \'post_type\' =>  \'events\',
    \'numberposts\'   =>  20,
    \'meta_key\'  =>  \'date\',
    \'orderby\'   =>  \'meta_value_num\',
    \'order\'     =>  \'ASC\',
    \'meta_query\' => array(
        array(
            \'key\'       =>  \'date\',
            \'value\'     =>  array ($von,$bis),
            \'compare\'   =>  \'BETWEEN\',
            \'type\'      =>  \'NUMERIC\',
        ),
        ),
        \'tax_query\' =>  array (
        array(
        \'taxonomy\'  =>  \'eventtype\', //taxonomy
        \'field\'     =>  \'term_id\',
        \'terms\'     =>  $allGenres //
        \'orderby\'   =>  array (\'terms\' => \'ASC\')
        )
)); 
这个orderby语句只是瞎猜,只是一些肮脏的代码在谷歌上搜索:)我是如何解决这个问题的?我可以想象这只是一项很简单的任务,对吗?我不是程序员,但在某种程度上

1 个回复
SO网友:Pixelsmith

我不确定您是否能够使用单个查询按类别进行组织。您可能需要先按类别排序,然后按日期排序(反之亦然)。我从this answer 并将其应用到你的情况中,尽管反过来可能更适合你。

// First get all the categories
$categories = get_categories( array (\'orderby\' => \'name\', \'order\' => \'asc\' ) );

// Then for each category, run a query inside of it
foreach ($categories as $category) {

   echo "Category is: $category->name <br/>";

   $catPosts = new WP_Query( 
                   array ( 
                       \'category_name\' => $category->slug,
                       \'orderby\' => \'title\' ) ); 

   if ( $catPosts->have_posts() ) {

       while ( $catPosts->have_posts() ) {
          $catPosts->the_post();
          echo "<a href=\'the_permalink()\'>the_title()</a>";
       }

       echo "<p><a href=\'category/$category->slug\'>More in this category</a></p>";

   } //end if
  


} //end foreach

wp_reset_postdata();

相关推荐

Sort by last word in title

我需要根据标题中的最后一个单词按字母顺序排列类别内的帖子。我在网上看到了一些建议,但没有一个是正确的。我正在根据其id为类别使用自定义布局,例如名为category-3的文件。用下面的php代码来显示帖子。<?php query_posts($query_string . \'&orderby=title&order=ASC\');?> <?php if ( have_p