嗯,恐怕这样不行。让我解释一下为什么。。。
在您的wpzen_change_post_order
功能检查是否$query->is_main_query()
. 准确地说,如果给定的查询是当前页面的主查询,则该检查是由WP生成的查询,以显示当前页面的默认帖子。
所以如果你自己创造WP_Query
对象,则此条件将为false,并且您的函数不会设置orderby
参数
How to change that?
有很多方法可以解决这个问题。首先:从中删除if语句
wpzen_change_post_order
. 但是,您应该小心,并在其中添加一些其他检查,以便确保只修改您真正想要的查询。(尤其是你应该检查,
if ( ! is_admin() )
)
第二种方式,我想更容易。。。添加orderby
参数直接在WP_Query
. 因此,显示帖子的代码如下所示:
<?php
$show_posts = \'12\';
$cat_name = \'Products\';
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$my_query = new WP_Query( array( // <- It\'s better to use array
\'category_name\' => $cat_name,
\'posts_per_page\' => $show_posts, // <- showposts is deprecated for long time, so use posts_per_page instead
\'paged\' => $paged,
\'orderby\' => \'menu_order\'
) );
global $wp_query; // <- I\'m not sure what do you want to accomplish with these 2 lines
$wp_query->in_the_loop = true;
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;?>
<a href="<?php echo get_permalink(); ?>">
<h2><?php the_title(); ?></h2>
</a>
<?php the_content( $more_link_text , $strip_teaser ); ?>
<?php endwhile; ?>