>

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

  • 답변 # 1

    마침내이 문제를 해결했습니다.이 답변 덕분에 키워드 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');
    
    

  • 답변 # 2

    저는 Wordpress를 사용하지 않지만 일반적으로 작은 따옴표로 $matches [1]를 평가하지 않습니다. 큰 따옴표를 대신 사용하여 변수 출력이 무엇인지 확인하십시오.

관련 자료

  • 이전 winforms - TreeNode에 ForeColor를 설정하는 방법은 무엇입니까?
  • 다음 Haskell Aeson - 하스켈 에이 슨 - 광택:json 인스턴스 파서 : 색상