WordPress WP_QUERY比较不起作用?

时间:2013-10-28 作者:Renish Khunt

这是我的自定义参数WP_Query.

$args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => \'9\',
    \'name\'=>\'Products\',
    \'compare\'=>\'LIKE\'
);
$the_query = new WP_Query( $args );
echo $the_query->request;
返回以下查询:

SELECT wp_posts.* 
FROM wp_posts 
WHERE 1=1 
    AND wp_posts.post_name = \'products\' 
    AND wp_posts.post_type = \'post\' 
ORDER BY wp_posts.post_date DESC 
正如我所见,这并不是LIKE 询问我是否想要一个。

1 个回复
SO网友:kaiser

你想要实现的是LIKE 查询但你用的是compare 仅针对存在的参数meta_query 参数。您需要使用如下过滤器:

add_filter( \'posts_where\', \'wpse120358TitleLike\', 10, 2 );
function wpse120358TitleLike( $where, &$wp_query )
{
    global $wpdb;
    if (
        \'post\' === $wp_query->get( \'post_type\' )
        AND $wp_query->get( \'name\' )
        // add further restriction arguments here:
        // AND ...
        )
    {
        $where .= $wpdb->prepare(
            \' AND %s LIKE %s\',
            "{$wpdb->posts}.post_title",
            \'%\'.like_escape( $wp_query->get( \'name\' ) ).\'%\'
        );
    }

    return $where;
}
请注意,这不是经过测试的脚本。这是一个可以建立的指导方针。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post