我有自定义订单帖子,我希望在管理菜单中为列表视图(选择删除)实现额外的过滤器。
我一直在搞乱这个问题几个小时但是找不到解决办法。 我希望通过几个元键和值以及发布日期来过滤帖子 这是我用于此事的代码
add_filter( 'parse_query', 'order_posts_filter' );
function order_posts_filter( $query ){
global $pagenow,$wpdb;
$type = 'post';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'orders' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '') {
$query->query_vars['post_date'] = $_GET['ADMIN_FILTER_FIELD_VALUE'];
}
if ( 'orders' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_STATUS_VALUE']) && $_GET['ADMIN_FILTER_STATUS_VALUE'] != '') {
$query->query_vars['meta_key'] = 'order_status';
$query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_STATUS_VALUE'];
}
return $query;
}
我在这里做错了什么? 我的$ _GET参数按预期工作,我从选择框中获取相关数据。
感谢
答案 0 :(得分:0)
我用这个:
function wpse454363_posts_filter( $query ){
global $pagenow;
$type = 'post';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'product' == $type && is_admin() && $pagenow=='edit.php') {
$meta_query = array(); // Declare meta query to fill after
if (isset($_GET['post_date']) && $_GET['post_date'] != '') {
// first meta key/value
$meta_query[] = array (
'key' => 'post_date',
'value' => $_GET['post_date']
);
}
if (isset($_GET['order_status']) && $_GET['order_status'] != '') {
// second meta key/value
$meta_query[] = array (
'key' => 'order_status',
'value' => $_GET['order_status']
);
}
$query->query_vars['meta_query'] = $meta_query; // add meta queries to $query
}
}
add_filter( 'parse_query', 'wpse454363_posts_filter' );