簡體   English   中英

分頁不適用於自定義重寫規則

[英]Pagination doesn't work with custom rewrite rules

我想在http://example.com/shop/discounted上的Woocommerce上展示打折產品,只要只有一頁,它就可以正常工作,但是當出現分頁時,它不起作用,並且var_dump( get_query_var('paged')始終返回0 ,我定義了兩個重寫規則,一個用於沒有分頁的規則,一個用於用戶導航到下一頁的規則。

function dw_custom_rewrite_rules() {
    add_rewrite_endpoint( 'sortby', EP_ALL_ARCHIVES );

    add_rewrite_rule('^shop/discounted?', 'index.php?post_type=product&sortby=discounts', 'top');

    // With pagination
    add_rewrite_rule('^shop/discounted/page/?([0-9]{1,})/?$', 'index.php?post_type=product&sortby=discounts&paged=$matches[1]', 'top');

}
add_action('init', 'dw_custom_rewrite_rules');

我終於還是設法解決這個問題,多虧了這個答案 ,我could'nt使用關鍵字paged我不知道為什么,所以我只是把它改成pageds ,再加入額外的代碼到一點點pre_get_posts鈎(與您自己的課程組合):

add_action('pre_get_posts', function( $query ){
    $paged = (int) get_query_var( 'pageds', 1 );
    $query->set('paged', $paged);
});

然后將pageds添加到query_vars

add_filter('query_vars', function( $vars ){
   $vars[] = 'pageds';

   return $vars;
});

還有一件事是我們不必編寫兩個單獨的重寫規則,我們可以像這樣組合它們:

function dw_custom_rewrite_rules() {
    add_rewrite_endpoint( 'sortby', EP_ALL_ARCHIVES );
    add_rewrite_rule('^shop/discounted(/page/([0-9]+)?)?/?$', 'index.php?post_type=product&sortby=discounts&pageds=$matches[2]', 'top');
}
add_action('init', 'dw_custom_rewrite_rules');

我不使用Wordpress,但是通常您永遠都不會使用單引號評估$ matches [1]。 請嘗試使用雙引號,然后檢查變量輸出是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM