按自定义域和类别对帖子进行排序

时间:2018-11-29 作者:Jones

我想按自定义字段中的元值对帖子进行排序。基本上,我添加了一个名为“date\\u event”的字段,并希望按该日期对帖子进行排序(存储为yyyymmdd)。

我仅有的一个工作示例是将其放置在循环中。php:

$query = new WP_Query( 
    array(
        \'meta_key\' => \'date_event\', 
        \'orderby\' => \'meta_value_num\',  
        \'order\' => \'DESC\',
    )  
);  
这是通过排序实现的,但它会对所有帖子进行排序,无论我查看的是哪个类别。据我所知,这是因为我打电话给$query 再一次,不要“过滤”我猜的帖子。这也可能只是糟糕的编码。

无论如何,我的目标是对帖子进行排序,但只显示您所在类别的帖子。

任何提示或参考都将不胜感激。

2 个回复
SO网友:Greg Winiarski

如果你在一个分类页面上(在URL上,如https://example.com/cateogry/test/ 并希望按“测试”类别筛选查询),然后您可以将代码修改为

global $wp_query;
$query = new WP_Query( 
  array(
    \'meta_key\' => \'date_event\', 
    \'orderby\' => \'meta_value_num\',  
    \'order\' => \'DESC\',
    \'tax_query\' => array(
        array(
          \'taxonomy\' => \'advert_category\',
          \'field\'    => \'term_id\',
          \'terms\'    => $wp_query->get_queried_object_id(),
        ),
    )
  )  
);  
当然,只有在解析和执行了WP请求后才运行此查询,换句话说,如果在“WP”操作之后运行此代码,此查询才会起作用。

如果您想在主题模板文件中添加此代码,那么它应该可以正常工作。

SO网友:Hristo Hristov

WP查询的工作方式是向数据库创建一个全新的查询。

WP_Query

除了“orderby”,您还需要为category参数赋值。现在,根据这些是常规帖子还是自定义帖子类型,您需要为不同的参数赋值。这里的另一个重要部分是,您需要知道您正在查看的当前类别(这只适用于类别页面模板)。最简单的方法是打电话get_queried_object_id().

$args = array(
  \'meta_key\' => \'date_event\',
  \'orderby\' => \'meta_value_num\',
  \'order\' => \'DESC\',
  \'cat\' => get_queried_object_id(),
);
$cust_query = new WP_Query($args);