从主wp_查询中获取结果

时间:2015-05-14 作者:glarkou

我想更改主wp_query 然后以PDF或HTML电子邮件的形式发送结果。

我已成功筛选wp_query 在“我的插件”功能中使用自定义过滤器和类似的代码:

add_action( \'pre_get_posts\', \'foo_modify_query_exclude_category\' );
function foo_modify_query_exclude_category( $query ) {
    if ( ! is_admin() && $query->is_main_query() && ! $query->get( \'cat\' ) )
    $query->set( \'cat\', \'-5\' );

    //
    // CALL preparePDF($wp_query) here in order to prepare the PDF
    //  
}
结果已成功过滤并显示给用户。

此时(甚至在将结果呈现给用户之前,我希望执行以下操作(实际上,我正在尝试在用于过滤主查询的相同函数中执行此操作):

我创建了一个新函数,在其中传递mainwp_query 作为参数:我尝试打印结果:

function preparePDF($wp_query) {

var_dump($wp_query);

// The Loop
if ( $wp_query->have_posts() ) {
    echo \'<ul>\';
    while ( $wp_query->have_posts() ) {
        $wp_query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
} else {
    // no posts found
    echo \'no posts found\';
}

}
不幸的是,即使我使用var_dump, 我没有得到任何结果。

我能解决这个问题吗?我做错了吗?

1 个回复
SO网友:birgire

看起来你在打电话preparePDF( $wp_query ) 在你的回拨中,但是$wp_query 未定义和全局$wp_query 如果没有global $wp_query.

改为尝试preparePDF( $query ) 和使用wp_reset_postsdata() 恢复全局$post 对象

另一件重要的事是你必须preparePDF() 函数之后WP_Query 已从数据库中获取帖子。所以不要使用pre_get_posts 钩子,改用后面的钩子。但这个钩子取决于你想对这些帖子做什么。我也不明白你在准备什么preparePDF() 作用

记住使用WP_DEBUG 在dev安装中,捕获任何PHP错误、警告和通知。例如,检查Debugging in WordPress 在法典中。

结束

相关推荐

Missing posts in a query

我有一个循环,我需要获取一个自定义的帖子类型,获得一个分类法,然后对于分类法中的每个术语,我需要输出所有帖子。它们都是在库中输出的,其中分类术语是标题,帖子是库中的项目(我使用http://bit.ly/1jCf2Wj). 我有这样的想法:<?php global $post; $post_type = \'people\'; $taxonomies = get_object_taxonomies( (object)