WP_Query获取POST_NAME为空的帖子

时间:2014-02-03 作者:Praz

我想获取所有post\\u名称(slug)未设置/为空以及meta\\u键不存在的帖子。

$args = array (
    \'post_type\'              => \'books\',
    \'name\'                   => \'\',
    \'post_status\'            => array(\'publish, draft\'),
    \'posts_per_page\'         => -1,
    \'meta_query\'             => array(
        array(
            \'key\'       => \'book_isbn_id\',
            \'value\'     => \'dummy\',
            \'compare\'   => \'NOT EXISTS\',
            \'type\'      => \'NUMERIC\',
        ),
    ),
);
$query = new WP_Query( $args );
echo $query->request;
看来\'name\' = \'\'\'name\' = \' \' 从我所看到的完全被忽视了echo $query->request.

我做错什么了吗?

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

您可以尝试以下操作:

$args = array (
    \'post_type\'              => \'books\',
    \'name\'                   => \'\',
    \'post_status\'            => array(\'publish, draft\'),
    \'posts_per_page\'         => -1,
    \'meta_query\'             => array(
        array(
            \'key\'       => \'book_isbn_id\',
            \'value\'     => \'dummy\',
            \'compare\'   => \'NOT EXISTS\',
            \'type\'      => \'NUMERIC\',
        ),
    ),
);

add_filter( \'posts_where\', \'custom_posts_where\' );
$query = new WP_Query( $args );
echo $query->request;
在哪里

function custom_posts_where( $where )
{
    remove_filter( current_filter(), __FUNCTION__ );
    if( FALSE === strpos( $where, \'post_name\' ) )
    {
        $where .= sprintf( " AND %s.post_name = \'\' ", $GLOBALS[\'wpdb\']->posts );
    }
    return $where;
}
搜索空的帖子名称。

SO网友:Raajen

帖子名称永远不会为空,因为在设置标题时会自动设置。或者,如果标题留空,那么您的post\\u名称将是您的post id。因此,您的查询将永远不会返回任何结果,除非您已破解wordpress核心。。。

结束

相关推荐

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

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