我定义了一个自定义字段,以便能够隐藏家中的帖子,如下所示:
/* 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' );
我正在尝试:
// The Query
$ppp = 12;
$page = $_GET['page'];
$args_count = array(
'post_type' => 'post',
'paged' => false,
'status' => 'publish'
);
$posts_home_count = new WP_Query( $args_count );
$manyPosts = $posts_home_count->found_posts;
$paginas = $manyPosts / $ppp;
wp_reset_postdata();
$meta_params = array(
array(
'key' => 'mnd_hide_homepage',
'value' => 1,
'compare' => '!=',
'type' => 'NUMERIC'
)
);
$args = array(
'post_type' => 'post',
'posts_per_page' => $ppp,
'paged' => $page,
'page' => $page,
'status' => 'publish'/*,
'meta_query' => $meta_params */
);
//print_r ( $args );
$posts_home = new WP_Query( $args );
它不会返回任何帖子,
但如果我改为
'compare' => '=',
然后它返回所有已检查的帖子
知道我缺少什么吗?
答案 0 :(得分:1)
有时Meta Query存在一些问题,并且问题并不总是可见 - 请尝试以下方法:
var_dump WP_Query对象并手动检查SQL - 你看到了问题吗?
您是否尝试删除&#39;输入&#39; =&GT; &#39; NUMERIC&#39;
&#34; hack&#34;溶液:
全球$ wpdb;
$ ids = $ wpdb-&gt; get_results(&#34; SELECT $ wpdb-&gt; posts.id FROM $ wpdb-&gt;发布WHERE post_status =发布INNER JOIN $ wpdb-&gt; post_meta ON $ wpdb-&gt ; post_meta.post_id = $ wpdb-&gt; posts.id WHERE $ wpdb-&gt; post_meta.key =&#39; mnd_hide_homepage&#39; AND $ wpdb-&gt; post_meta.value!=&#39; 1&#39; &#34);
//将带有post__in的id放入WP_Query参数
(未测试的)
如果没有,这可能有助于找到它。
答案 1 :(得分:0)
试试这个 -
array(
'key' => 'mnd_hide_homepage',
'value' => '1',
'compare' => '!=',
'type' => 'NUMERIC'
)
或者
array(
'key' => 'mnd_hide_homepage',
'value' => array('1'),
'compare' => 'NOT IN'
)