在添加查询参数中使用META_QUERY

时间:2016-11-07 作者:RomainA111

我试图通过单击自定义列中列出的值来过滤帖子列表。

要了解这一点,我正在使用:

$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
我不知道为什么我的元查询不起作用。

没人有主意吗?

提前感谢!

1 个回复
最合适的回答,由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\' ) );
    }

}

相关推荐

在将代码添加到函数后无法登录WordPress wp-admin。php

我在函数末尾添加以下代码。php文件,用于根据自定义帖子的帖子标题填充分类法。问题是,当我添加代码时,尝试登录wp admin时会出现以下错误。非常感谢您能帮助我们弄清楚为什么会发生这种情况。Error:错误:由于意外输出,Cookie被阻止。有关帮助,请参阅此文档或尝试支持论坛。Code: <?php function update_custom_terms($post_id) { // only update terms if