我想按自定义字段中的元值对帖子进行排序。基本上,我添加了一个名为“date\\u event”的字段,并希望按该日期对帖子进行排序(存储为yyyymmdd)。
我仅有的一个工作示例是将其放置在循环中。php:
$query = new WP_Query(
array(
\'meta_key\' => \'date_event\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
)
);
这是通过排序实现的,但它会对所有帖子进行排序,无论我查看的是哪个类别。据我所知,这是因为我打电话给
$query
再一次,不要“过滤”我猜的帖子。这也可能只是糟糕的编码。
无论如何,我的目标是对帖子进行排序,但只显示您所在类别的帖子。
任何提示或参考都将不胜感激。
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);