我有一个自定义的帖子类型,其中有一个自定义的日期字段。
在帖子列表上(edit.php)I want to be able to filter posts between 2 dates based on the custom post meta date (非发布日期),此字段为_exm_date
.
我读过以下文章:
https://rudrastyh.com/wordpress/date-range-filter.html
这对于实际的发布日期非常有用,但对于它使用的自定义字段则不适用
date_query
.
因此,我更改了周围的代码以使用meta_query
.
我现在已经通过了查询,可以看到meta_query
在pre_get_posts
数组,但我没有得到任何结果。
我还尝试了以下解决方案:Query posts between two dates (custom meta keys) CMB2
但这对我不起作用,代码与我的类似。
我还研究了:Date query for a custom meta field
这是我的pre_get_posts
操作查询:
public function filterquery( $admin_query ){
global $pagenow;
if (
is_admin()
&& $admin_query->is_main_query()
// by default filter will be added to all post types, you can operate with $_GET[\'post_type\'] to restrict it for some types
&& in_array( $pagenow, array( \'edit.php\', \'upload.php\' ) )
&& ( ! empty( $_GET[\'mishaDateFrom\'] ) || ! empty( $_GET[\'mishaDateTo\'] ) )
) {
$meta_query = array(
\'relation\' => \'AND\',
array(
\'key\' => \'_exm_date\',
\'value\' => date( \'ymd\', strtotime( $_GET[\'mishaDateFrom\'] ) ),
\'compare\' => \'>=\',
\'type\' => \'DATE\'
),
array(
\'key\' => \'_exm_date\',
\'value\' => date( \'ymd\', strtotime( $_GET[\'mishaDateTo\'] ) ),
\'compare\' => \'<=\',
\'type\' => \'DATE\'
)
);
$admin_query->set( \'meta_query\', $meta_query );
}
print_r($admin_query);
return $admin_query;
}
$admin_query
输出为:
### Solution ###
我想我可能在发布后一分钟内就解决了这个问题。这是因为保存为自定义元的日期的格式与查询中的值不同。Doh!