2017-10-27 14 views
0

私はWoocommerceの割引商品をhttp://example.com/shop/discountedに表示しようとしていますが、1ページしかない限り正常に動作しますが、ページネーションが来たら動作しません。var_dump(get_query_var('paged')常に0、 が返されます。ページングがないときとユーザーが次のページに移動するときの2つの書き換えルールが定義されています。カスタム書き換えルールでページネーションが機能しない

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'); 
+0

書き換え規則についての知識がある方がよいという理由から、http://wordpress.stackexchange.comでこれを尋ねるべきです。 – Blackbam

+0

@Blackbamありがとう、そこにこの質問をコピーすればいいですか? – Amin

+0

はい、私はそう思います。ここで素敵な答えが得られたら、ここでそれを削除できます。 – Blackbam

答えて

0

this answerのおかげで、私はpagedというキーワードを使うことができませんでした。理由はわからないので、ちょうどpagedsに変更してから、ちょっとしたコードを追加しました(自分のcoditionalsとofcourseの)pre_get_postsフック:その後、

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

pagedsquery_varsに追加:

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

    return $vars; 
}); 

ともう一つは、我々は2つの別々のRを記述する必要はありませんされて私たちはこれを以下のように組み合わせることができます:

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'); 
-1

私はWordpressを使用しませんが、通常は$ matches [1]を一重引用符で評価しません。代わりに二重引用符を試して、変数出力が何であるかを確認してください。

+0

私はそれが問題だとは思わないが、私は二重引用符で試してみたが、まだ運がない – Amin

関連する問題