Filtering WP_Query

时间:2013-09-21 作者:leemon

我正在开发一个使用艺术家自定义帖子类型的网站,我需要在页面模板中查询此类型的所有帖子。我需要设置is_post_type_archive 属性设置为true,以使用posts_orderby 滤器我正在使用以下代码,但WordPress似乎忽略了第三行:

$args = array(\'post_type\' => \'artist\');
$wp_query = new WP_Query( array_merge( $args, array(\'nopaging\' => true) ) );
$wp_query->is_post_type_archive = true;
这是过滤器:

function artist_posts_orderby( $orderby )
{
    if (is_post_type_archive(\'artist\')) {
        $orderby = "RIGHT(post_title, LOCATE(\' \', REVERSE(post_title)) - 1) ASC";
    }
    return $orderby;
}
add_filter(\'posts_orderby\', \'artist_posts_orderby\' );
有什么想法吗?

提前感谢

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

我重写了代码,现在它工作了

循环:

$args = array(\'post_type\' => \'artist\');
$wp_query = new WP_Query( array_merge( $args, array(\'nopaging\' => true) ) );
过滤器:

function theme_posts_orderby( $orderby, $query )
{
    if ($query->query_vars[\'post_type\'] == \'artist\') {
        // order artists by last name
        $orderby = "RIGHT(post_title, LOCATE(\' \', REVERSE(post_title)) - 1) ASC";
    }
    return $orderby;
}
add_filter(\'posts_orderby\', \'theme_posts_orderby\', 10, 2 );

SO网友:Rarst

WP\\u Query在创建帖子时立即检索帖子(在构造函数中)。修改属性时,已对其进行处理并存储结果。

您可能不应该重复使用main$wp_query 对象和全局方法。

您的问题并没有提供足够的详细信息来建议如何更精确地针对您的需求进行查询,但总有一种简单的方法-在查询之前添加过滤器,然后立即删除。

结束

相关推荐

wp-query problem with author

我运行查询:SELECT post_author FROM `wp_posts` 看到很多帖子都有作者值1。然后执行搜索。php如下所示:$args = array( \'author\' => 1, ); $the_query = new WP_Query( $args ); 没有结果!怎么了?