控制在Wordpress中显示多少帖子

时间:2019-04-25 09:59:00

标签: wordpress

有没有一种方法可以仅使用functions.php来控制Wordpress中自定义帖子类型显示多少帖子? 我的查询不适用于“ posts_per_page”。

    <?php
        $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;


            $query_args = array(
                'posts_per_page' => 8,
                'paged' => $paged
                                );
            $query = new WP_Query( $query_args );
            if ( have_posts() ) : while ( have_posts() ) : the_post();
            $terms = get_the_terms($post->ID, 'workscat');
            $nameTerm = $terms[0]->name;
            $thumbnail = wp_get_attachment_url(get_post_thumbnail_id($post->ID), 'gallery-thumb');
            if(empty($thumbnail)){ $thumbnail = APP_URL . "images/works/no-image.jpg";}

?>

2 个答案:

答案 0 :(得分:2)

无论何时使用“自定义帖子类型”,查询都不会返回任何内容,但是您觉得自己所做的一切都正确无误,请访问“设置” >>“永久链接”以重置永久链接。选择默认,然后按保存更改,然后将其切换回帖子名称,然后再次按保存更改

此外,您可以修改主查询,只需使存档模板返回结果即可,而无需新的WP_Query对象。

在您的情况下,我将使用pre_get_posts钩子,并过滤主查询。将以下代码添加到您的functions.php

function set_posts_per_page_for_custom_cpt( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_post_type_archive( 'CustomPostType' ) ) 
    {
       $query->set( 'posts_per_page', '10' );
     }
   }
  add_action( 'pre_get_posts', 'set_posts_per_page_for_custom_cpt' );

将此代码放在您的functions.php文件中。

希望这会有所帮助

答案 1 :(得分:1)

您可以在您的pre_get_posts中使用function.php操作来执行此操作,以下是其工作代码

<?php
function my_cptui_change_posts_per_page( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
       return;
    }

    if ( is_post_type_archive( 'posttype1' ) ) {
       $query->set( 'posts_per_page', 8 );
    }

    if ( is_post_type_archive( 'posttype2' ) ) {
       $query->set( 'posts_per_page', 12 );
    }
    //$query->is_category('mycategoryname')  remove this if you want for all taxonomy categories
    if ( $query->is_tax('mytaxonomyname') || $query->is_category('mycategoryname') ) {
        set_query_var('posts_per_page', 15);
    }

}
add_filter( 'pre_get_posts', 'my_cptui_change_posts_per_page' );

注意:(如果不起作用,请转到设置-永久链接并重置永久链接)

经过测试,效果很好