Metadata tax\u查询以获取具有空值字段的帖子?

Metadata tax\u查询以获取具有空值字段的帖子?,metadata,wordpress,Metadata,Wordpress,我定义了一个自定义字段,以便能够在家中隐藏帖子,如下所示: /* Campo adicional que puede ocultar noticia de la home */ function mnd_get_custom_field( $value ) { global $post; $custom_field = get_post_meta( $post->ID, $value, true ); if ( !empty( $custom_field ) )

我定义了一个自定义字段,以便能够在家中隐藏帖子,如下所示:

/* Campo adicional que puede ocultar noticia de la home */
function mnd_get_custom_field( $value ) {
    global $post;
    $custom_field = get_post_meta( $post->ID, $value, true );
    if ( !empty( $custom_field ) )
        return is_array( $custom_field ) ? stripslashes_deep( $custom_field ) : stripslashes( wp_kses_decode_entities( $custom_field ) );
    return false;
}
function mnd_add_custom_meta_box() {
    add_meta_box( 'home-page', __( 'Home page', 'mnd' ), 'mnd_meta_box_output', 'post', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'mnd_add_custom_meta_box' );
function mnd_meta_box_output( $post ) {
     wp_nonce_field( 'my_mnd_meta_box_nonce', 'mnd_meta_box_nonce' ); ?>
    <p>
     <label for="mnd_hide_homepage"><?php _e( 'Hide from homepage', 'mnd' ); ?>:</label>
     <input type="checkbox" name="mnd_hide_homepage" id="mnd_hide_homepage" checked="<?php echo mnd_get_custom_field( 'mnd_hide_homepage' ) == 1 ? 'checked' : ''; ?>" value="1" size="50" />
    </p>
    <?php
}
function mnd_meta_box_save( $post_id ) {
     if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
     if( !isset( $_POST['mnd_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['mnd_meta_box_nonce'], 'my_mnd_meta_box_nonce' ) ) return;
     if( !current_user_can( 'edit_post', get_the_id() ) ) return;
     if( isset( $_POST['mnd_hide_homepage'] ) )
     update_post_meta( $post_id, 'mnd_hide_homepage', esc_attr( $_POST['mnd_hide_homepage'] ) );
}
add_action( 'save_post', 'mnd_meta_box_save' );
它不会返回任何帖子

但是如果我换成

'compare' => '=',
然后返回所有选中的帖子

知道我遗漏了什么吗?

试试这个:

array(
    'key' => 'mnd_hide_homepage',
    'value' => '1',
    'compare' => '!=',
    'type' => 'NUMERIC'
)


元查询有时会出现一些问题,而且问题并不总是可见的。请尝试以下操作:

  • var\u dump
    WP\u查询对象并手动检查SQL。你看到问题了吗

  • 您是否尝试删除
    “type”=>“NUMERIC”

  • “黑客”解决方案(未经测试):

  • global$wpdb;
    $ids=$wpdb->获取结果(“
    从$wpdb->posts中选择$wpdb->posts.id
    其中post_状态=发布
    内部连接$wpdb->post\u meta
    在$wpdb->post\u meta.post\u id=$wpdb->posts.id上
    和$wpdb->post_meta.key='mnd_hide_homepage'
    和$wpdb->post_meta.value!=“1”
    ");
    //将带有post\u的ID放入WP\u查询参数中
    

    也许这就是解决办法。如果没有,它可能有助于找到它。

    您是否尝试过
    “比较”=>“不存在”
    ?是的,我刚刚尝试过,它不会返回值已更改的字段,无论其值是什么。。您的第一个选项,就是我在问题中包含的那个选项。。。第二个选项,秒似乎被忽略了。在我的第一个选项中,我添加了value=>'1',实际上,我的解决方案是使用设置的值进行OR查询(我将其更改为
    yes
    )或不退出,但您的答案非常感谢!
    array(
        'key' => 'mnd_hide_homepage',
        'value' => '1',
        'compare' => '!=',
        'type' => 'NUMERIC'
    )
    
    array(
        'key' => 'mnd_hide_homepage',
        'value' => array('1'),
        'compare' => 'NOT IN'
    )