我试图通过单击自定义列中列出的值来过滤帖子列表。
要了解这一点,我正在使用:
$minisite = sprintf( \'<a href="%s">%s</a>\',
esc_url( add_query_arg( array( \'post_type\' => $post->post_type,
\'meta_query\' => array(
array(\'key\' => \'minisite_actu_cat\',
\'value\' => $idParentPost,
\'compare\' => \'REGEXP\' )
)
), \'edit.php\' ) ),
esc_html( sanitize_term_field( \'name\', $parentPost->post_title, $post->ID, \'publications-type\', \'display\' ) )
);
在我的情况下,值如下所示:
a:1:{i:0;s:3:"522";}
在我的URL中,我得到了以下内容:
wp-admin/edit.php?post_type=msactus&meta_query[0][key]=minisite_actu_cat&meta_query[0][value]=522&meta_query[0][compare]
但它根本无法过滤。我试图显示请求,但得到了以下结果:
SELECT SQL_CALC_FOUND_ROWS BIEVREISERE_posts.ID FROM BIEVREISERE_posts WHERE 1=1 AND BIEVREISERE_posts.post_type = \'msactus\' AND (BIEVREISERE_posts.post_status = \'publish\' OR BIEVREISERE_posts.post_status = \'future\' OR BIEVREISERE_posts.post_status = \'draft\' OR BIEVREISERE_posts.post_status = \'pending\' OR BIEVREISERE_posts.post_status = \'private\') ORDER BY BIEVREISERE_posts.post_date DESC LIMIT 0, 20
我不知道为什么我的元查询不起作用。
没人有主意吗?
提前感谢!
最合适的回答,由SO网友:cybmeta 整理而成
对我来说,这似乎是正常和预期的行为。meta_query
不是已注册的查询变量。您可以在中看到已注册查询变量的列表及其与WP\\U查询的关系this codex entre. 要使用的任何其他查询变量都需要由您注册和处理。
一个非常快速和通用的示例:
// Add custom query var
add_filter( \'query_vars\', \'cyb_add_query_vars\' );
function cyb_add_query_vars( $vars ) {
$vars[] = \'my_meta_query\';
return $vars;
}
// Manipulate query
add_action( \'pre_get_posts\', \'cyb_pre_get_posts\' );
function cyb_pre_get_posts( $query ) {
// Only main query?
// if( $query->is_main_query() ) ...
// Only admin?
// if( is_admin() ) ....
// Or whatever, you can manipulate $query as you wish
if( ! empty( get_query_var( \'my_meta_query\' ) ) ) {
$query->set( \'meta_query\', get_query_var( \'my_meta_query\' ) );
}
}