如何传递args进行存档.php查询?

时间:2019-09-07 作者:Alt C

我正在尝试将参数传递到存档。php让我可以对帖子进行排序,设置帖子数量等。。

但是查询是这样完成的

<?php if (have_posts()): ?>
 <?php while (have_posts()): the_post();?> 
如果是的话new \\WP_Query($args); 我可以在这里传递参数,但这不能在存档中完成。php模板?

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

这个pre_get_posts 钩子可用于在运行查询之前修改查询。您可以使用$query->set() 在上设置参数WP_Query 对象,以及$query->is_main_query() 在回调中,限制对主查询的更改:

add_action(
    \'pre_get_posts\',
    function( $query ) {
        if ( ! is_admin() && $query->is_main_query() ) {
            $query->set( \'posts_per_page\', 12 );
        }
    }
);
您不能针对特定的模板,但如果希望更改只影响存档,可以使用$query->is_archive(), 对于日期、分类法和post类型存档,这是正确的,或者如果您只想将更改应用于类别存档,则可以使用$query->is_category(). 许多正常的conditional functions 可用作检查当前查询的方法。

SO网友:Matteo Feduzi

这是我存档中的代码。php文件:

$args = array( 
    \'posts_per_page\' => 3,
    \'order\' => \'DESC\'
);

$myposts = new WP_Query($args);

<?php if ( $myposts->have_posts() ) : ?>

    <?php while ( $myposts->have_posts() ) : $myposts->the_post(); ?>

    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>

<?php else: ?>

    //If there is no post for this category / tag

<?php endif; ?>
我希望我能很好地理解这个问题,并能帮助你。

顺致敬意,