wordpress 自定义帖子类型分页将我发送到主页

ht4b089n  于 2023-01-08  发布在  WordPress
关注(0)|答案(1)|浏览(101)

多年来,我使用一个自定义分页脚本,我包括我所有的网站,它分页完美地通过职位。有史以来第一次我创建自定义职位类型。我同样的脚本不会分页通过网页...也所有网页链接送我回家。它显示完全正确的页数根据职位每页。它只是不会工作。我用了所有的脚本,我可以找到在网上。
有什么我错过了吗?
Has archive是真的。下面的代码示例来自archive-drivers.php
我还使用了自定义CPT创建和函数中的脚本,也使用了插件。只是为了检查是否有问题。

<?php
    $args = array(
    'posts_per_page'   => 1,
    'paged'            => $paged,
    'orderby'          => 'post_date',
    'order'            => 'DESC',
    'post_type'        => 'Drivers',
    'post_status'      => 'publish',
    'suppress_filters' => true
    );

    // get the results
    $wp_query = new WP_Query( $args );
    ?>

    <?php if ($wp_query->have_posts()): // the Loop ?>
    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>


    (...my code to display the custom post type posts...)

    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
    <!-- end of Code for the Loop -->

    <?php endif; ?>



    <!-- Code for PAGINATION -->
    <?php
    if (function_exists("custom_pagination"))
    {
    custom_pagination();
    }
    ?>
    <!-- End of Code for PAGINATION -->

    <?php wp_reset_postdata(); ?>
    <!-- end of Code for the Loop -->

以及

// Bootstrap Custom Pagination function in Functions.php
    function custom_pagination($pages = '', $range = 4)
    {  
    $showitems = ($range * 2) + 1;  

    global $paged;
    if(empty($paged)) $paged = 1;

    if($pages == '')
    {
    global $wp_query; 
    $pages = $wp_query->max_num_pages;
    if(!$pages)
    {
    $pages = 1;
    }
    }   

    if(1 != $pages)
    {
    echo '<div class="as-pagination" style="text-align:center; align:center;">'; 
    echo '<div> Page ' .$paged . ' of ' .$pages.'</div>'; 
    echo '<ul>';

    // If we want to always see th First Page link
    if($paged > 1) echo '<li><a href="' .get_pagenum_link(1). '" title="First Page" ><i class="far fa-arrow-left"></i></a></li>';

    for ($i=1; $i <= $pages; $i++)
    {
    if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
    {
    echo ($paged == $i)? "<li class=\"active\"><span>".$i."</span>
    </li>":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>";
    }
    }

    //if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo '<li><a href="' .get_pagenum_link($pages). '" title="??">&raquo;</a></li>';

    if($paged < $pages) echo '<li><a href="' .get_pagenum_link($pages). '" title="Last Page"><i class="far fa-arrow-right"></i></a></li>';
    echo "</ul>";
    echo "</div>";
    }
    }
ql3eal8s

ql3eal8s1#

答案来自一个FB朋友,和pre_get_posts有关,只有这样你才能告诉wp你想在你的自定义帖子类型中每页有多少帖子,args中的“posts_per_page”不起作用。

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

        if ( is_post_type_archive( 'drivers' ) ) {
           $query->set( 'posts_per_page', 1 );
        }
    }
    add_filter( ' ', 'my_cptui_change_posts_per_page' );

相关问题