如何修复WP查询返回结果但不应该?

时间:2021-12-30 作者:opendatum

我有一个WP查询,它应该不会返回任何结果,但似乎会返回项目。我猜空结果被解释为;返回所有结果”;但我不确定正确的解决方法。看起来是这样的:

    $pairedThing = get_field(\'myThing\');
    $args = array(
    \'posts_per_page\'=> 2,
    \'post_type\'     => \'thing\',
    \'meta_key\'      => \'identifier\',
    \'meta_value\'    => $pairedThing,
    );
    
    $the_query = new WP_Query( $args ); ?>
    <?php if( $the_query->have_posts() ): ?>
    <?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <tr><td>Name</td><td>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </td></tr>
    <?php endwhile; else: 
                            //{echo \'None\';}
    ?>
    <?php endif; ?>
每个查询要么有一个结果(如果与查询匹配),要么没有结果。当有匹配项时,一切都按计划进行,但当没有匹配项时,post\\u类型中的最新结果是return,而我预计不会返回任何结果。

有什么想法吗?我真的做到了;“其他”;但它没有起作用。

1 个回复
最合适的回答,由SO网友:admcfajn 整理而成

这里需要考虑以下几点:

1.)仅当值存在时,才尝试添加元查询:

$pairedThing = get_field(\'myThing\');
$args = [
    \'posts_per_page\' => 2,
    \'post_type\'      => \'thing\',    
];
if ( ! empty( $pairedThing ) ) {
    $args[\'meta_key\']   = \'identifier\';
    $args[\'meta_value\'] = $pairedThing;
}
2.)没有元密钥集的帖子的帐户:

$pairedThing = get_field(\'myThing\');
$args = [
    \'posts_per_page\' => 2,
    \'post_type\'      => \'thing\',
    \'meta_query\'     => [
        \'my_meta_query\' [ // Multiple meta-queries per handle.
            \'relation\' => \'OR\',
            [
                \'key\'     => \'identifier\',
                \'value\'   => $pairedThing,
                \'compare\' => \'=\',
            ],
            [
                \'key\'     => \'identifier\',
                \'compare\' => \'NOT EXISTS\',
            ],
        ],
    ]
];

相关推荐

用于更新管理员电子邮件的SQL查询

在将临时站点推向生产之后,我有[email protected] 设置为我需要更改的管理电子邮件。显然,我无法访问该电子邮件来验证更改,因为它不存在,所以我编写了以下查询:UPDATE wp_options SET option_value = \'[email protected]\' WHERE option_name = \'admin_email\' 我发现this 相关答案,但我不使用phpMyAdmin。这是覆盖此的确定方法吗?还是有更合适的方法?