问题似乎是您正在将数据保存为:
$a = array( "13112" );
update_post_meta( $post_id, "article_author", $a);
这将为您提供
meta_value
a:1:{i:0;s:5:"13112";}
您的第一个查询将提供转义引号:
LIKE \'%\\"13112\\"%\'
方法1如果使用数字保存作者数组:
$a = array( 13112 );
update_post_meta( $post_id, "article_author", $a);
然后对应的
meta_value
将是
a:1:{i:0;i:13112;}
因此,当您尝试元查询时:
\'meta_query\' => array(
array(
\'key\' => \'article_author\',
\'value\' => \':13112;\',
\'compare\' => \'LIKE\'
)
)
相应的SQL部分将是
LIKE \'%:13112;%\'
你可以试着用这个来代替。
方法2另一种方法是用非转义引号删除转义引号:
add_filter(\'posts_where\',\'my_posts_where\');
$getPosts = new WP_Query($args);
remove_filter(\'posts_where\',\'my_posts_where\');
在哪里
function my_posts_where($where){
$where = str_replace(\'\\"\', \'"\', $where);
return $where;
}
但我不想再提了。