这篇文章讲的是两件事:
此查询的所有结果都会发布到页面的标题,而不是内容区域中的标题。您知道为什么会发生这种情况的解决方案,以及解决这种情况的最简单方法吗?
你能评论一下我的问题吗?我想知道它的所有错误(但它正在工作,并产生预期的结果)
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;
}
}
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循环中显示的逻辑,但该部分不属于过滤器,因为过滤器在页面显示之前运行,这就是为什么它显示在页面顶部。