查询&_Content()显示在标题中

时间:2015-01-28 作者:OldWest

这篇文章讲的是两件事:

此查询的所有结果都会发布到页面的标题,而不是内容区域中的标题。您知道为什么会发生这种情况的解决方案,以及解决这种情况的最简单方法吗?

你能评论一下我的问题吗?我想知道它的所有错误(但它正在工作,并产生预期的结果)

add_action( \'pre_get_posts\', \'cv_testimonials_list\');

function cv_testimonials_list($query) {

if ($query->is_page(\'9595\') && $query->is_main_query()) {
    gravity_form(1, false, false, false, \'\', false);
    $args = array (
\'post_type\'              => \'testimonial\',
\'post_status\'            => \'published\',
\'pagination\'             => true,
\'posts_per_page\'         => \'10\',
\'order\'                  => \'DESC\',
\'orderby\'                => \'date\',);

// The Query
$query = new WP_Query( $args );
    while ( $query->have_posts() ) : $query->the_post();

                          echo "<p><strong>" . the_content() . "</strong></p>";

                          echo "<p>" . the_title() . "</p>";

                          echo "<p><a target=\'_blank\' href=\'http://" . get_post_meta( get_the_ID(), \'testimonials-website-url\',true) . "\'>" . get_post_meta( get_the_ID(), \'testimonials-website-url\', true ) . "</a></p>";

                        // print "<pre>";
                            // print_r($custom_fields);
                        // print "</pre>";
endwhile;
return;
}
}

3 个回复
SO网友:Milo

主查询在加载模板之前运行。WordPress知道根据该查询的结果加载哪个模板。

如果要在内容区域中插入其他查询,请创建a shortcode, 或添加filter on the_content 并在那里执行页面检查/查询输出。

SO网友:Privateer

正如Milo所指出的,您应该只编辑查询。您的问题是,然后在pre\\u get\\u posts筛选器处理时执行并处理它。

作为一个过滤器,应该使用pre\\u get\\u posts来修改查询。然后将运行它,然后显示您的页面。

因此:

function cv_testimonials_list($query) {

    if ($query->is_page(\'9595\') && $query->is_main_query()) {
        gravity_form(1, false, false, false, \'\', false);
        $query->set(\'post_type\', \'testimonial\');
        $query->set(\'order\', \'DESC\');
        $query->set(\'orderby\', \'date\');
    }
}
可以根据需要编辑查询。。。你的模板应该显示正确的帖子。

您可能需要编辑模板以使用while循环中显示的逻辑,但该部分不属于过滤器,因为过滤器在页面显示之前运行,这就是为什么它显示在页面顶部。

SO网友:tao

pre_get_posts() 不是普通筛选器。

这是一个动作过滤器,在所有参数都传递给WordPress的任何一个查询之后,在对db运行查询之前发生。你在里面能做的一切pre_get_posts() 如果满足WP条件,则修改查询参数(并非所有条件都可用,只是运行查询之前WP已知的条件-阅读文档了解更多详细信息)。

这就是为什么不应该在内部运行另一个查询pre_get_posts() (我很惊讶你没有得到无限循环)因为你的查询应该重新触发pre\\u get\\u posts()),nor should you print, echo, or return anything.

如果满足条件,只需修改$查询即可。

这应该能回答你的两个问题。

结束

相关推荐

Custom taxonomy template loop

我知道这个问题问得很多,但我找不到一个适合我的答案。我制作了一些自定义帖子类型和一些自定义分类法。我有自定义的帖子类型Products 并与分类法相联系Product Categories. 当用户在产品页面上单击产品类别时,我想向他显示该特定类别中的所有产品。问题是,产品类别将约为50种。现在我发现的唯一一件事就是把这个<?php $loop = new WP_Query( array( \'post_type\' => \'all_products\', \'posts_per_page\