简体   繁体   中英

Wordpress pagination not working in home page with Post name Permalink

EDIT : Even after making the Permalink Settings to Post name, http://domain.com/?paged=3 still works.

I have posts collection in my home page which has pagination. Let's say I have

domain.com

If my Permalink settings is in default which is Plain Format like

    http://domain.com/?p=123

Then my pagination http://domain.com/?paged=3 will work.

How ever if I want my permalink settings to be in Post Name Format like

    http://domain.com/sample-post/

Then my pagination in my home page will not work anymore. I tried inspect element in the link of pagination if set in post name permalink and it's

http://domain.com/page/23/

Then what happened is it will not go to page 23. It will always redirect to my home page

http://domain.com

I already tried this

https://wordpress.stackexchange.com/questions/134339/pagination-on-custom-post-type-not-working-if-permalinks-set-to-rewrite-url

Which I put this code in my functions.php

add_filter( 'redirect_canonical','custom_disable_redirect_canonical' ); 
 function custom_disable_redirect_canonical( $redirect_url ){
 if ( is_singular('your_custom_post_type') ) $redirect_url = false;
 return $redirect_url;
}

And it didn't work.

Update I checked the functions.php and i see this

/*  -----------------------------------------------------------------------------
        Woo commerce
     */

    if (in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' )))) { // check if we have woo commerce installed
        // breadcrumb
        add_filter( 'woocommerce_breadcrumb_defaults', 'td_woocommerce_breadcrumbs' );

        function td_woocommerce_breadcrumbs() {
            return array(
                'delimiter' => ' <span class="td-sp td-sp-breadcrumb-arrow td-bread-sep"></span> ',
                'wrap_before' => '<div class="entry-crumbs" itemprop="breadcrumb">',
                'wrap_after' => '</div>',
                'before' => '',
                'after' => '',
                'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ),
            );
        }

        // number of products to display on shop page
        add_filter('loop_shop_per_page', create_function('$cols', 'return 8;'));



        if (!function_exists('woocommerce_pagination')) {
            // pagination
            function woocommerce_pagination(){
                echo td_page_generator::get_pagination();
            }
        }


        if (!function_exists('woocommerce_output_related_products')) {
            // number of related product
            function woocommerce_output_related_products() {
                woocommerce_related_products(4,4); // Display 4 products in rows of 4
            }
        }
    }



    /**
     * Add prev and next links to a numbered link list - the pagination on single.
     */
    function wp_link_pages_args_prevnext_add($args)
    {
        global $page, $numpages, $more, $pagenow;

        if (!$args['next_or_number'] == 'next_and_number')
            return $args; # exit early

        $args['next_or_number'] = 'number'; # keep numbering for the main part
        if (!$more)
            return $args; # exit early

        if($page-1) # there is a previous page
            $args['before'] .= _wp_link_page($page-1)
                . $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
            ;

        if ($page<$numpages) # there is a next page
            $args['after'] = _wp_link_page($page+1)
                . $args['link_before'] . $args['nextpagelink'] . $args['link_after'] . '</a>'
                . $args['after']
            ;

        return $args;
    }
    add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');
    add_theme_support('woocommerce');

It doesn't have woo commerce plugin but It has that code. Hope it helps you find out whats going on?

If you are using WP_Query for retrieving posts then change your code to below

$paged = ( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1;


    $args = array(
            'posts_per_page' => 5,
            'post_type' => 'post',
            'paged' => $paged,
    );

    $the_query = new WP_Query( $args );

    while ( $the_query->have_posts() ) : $the_query->the_post();
     the_title();
     echo '<br>';
    endwhile;

    $big = 999999999; 

    echo paginate_links( array(
            'format' => '?paged=%#%',
            'current' => max( 1, $paged ),
            'total' => $the_query->max_num_pages
    ) );

Beside other mentioned scenarios, Make sure you do not have the slug of the template you are using the loop on similar to any of the post types exist in the theme. If a page slug is similar to the post type slug, the pagination will not work properly.

Is is not possible to have a page name and a custom post type with the same name. If you do, the page url-slug of the page name and custom post type slug are the same and will cause a not found error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM