Sự cố với add_rewrite_rule và phân trang (truy vấn phân trang và trang)


7

Tôi có một phân loại tùy chỉnh được đặt tên locationvà tôi muốn thêm các phần như 'tin tức' và 'thị trường' cho mỗi thuật ngữ, vì vậy url của tôi trông giống như/location/montreal/news/

Nó hoạt động hoàn hảo cho đến khi tôi cố gắng thêm phân trang. Đây là mã của tôi:

add_action( 'init', 'region_rewrite' );
function region_rewrite()
{
    global $wp;
    $wp->add_query_var( 'section' );

    add_rewrite_rule(
      '^location/([^/]*)/([^/]*)/page/([0-9]+)/?',
      'index.php?location=$matches[1]&section=$matches[2]&paged=$matches[3]',
      'top'
    );
    add_rewrite_rule(
      '^location/([^/]*)/([^/]*)/?',
      'index.php?location=$matches[1]&section=$matches[2]',
      'top'
    );
}

Tôi đang sử dụng plugin phân tích Rewrite và có vẻ như vị trí, phần truy vấn và phân trang truy vấn được gán với giá trị đúng. Tuy nhiên, tôi gặp lỗi 404 khi cố gắng truy cập một url trang như thế nào /location/montreal/news/page/2. Tôi cũng nhận thấy rằng pagebiến có giá trị /2. Có thể đây là lý do tại sao tôi không tìm thấy 404?

Mọi sự trợ giúp sẽ rất được trân trọng!


Tôi thấy rằng khi đi sâu vào các permalinks đẹp (quá nhiều biến số), việc xử lý các quy tắc viết lại sẽ áp đảo tôi. Tôi có xu hướng chỉ nối một truy vấn xấu xí cũ đến cuối và gọi nó là một ngày.
WraithKenny

Câu trả lời:


1

Tôi tin rằng bạn chỉ có thể gọi trang add_rewrite_url cuối cùng để nó được kiểm tra trước. Nếu không, phiên bản phân trang sẽ không bao giờ có bất kỳ trận đấu nào, vì phiên bản không phân trang sẽ luôn khớp trước. Cũng nên hoạt động nếu bạn xóa 'top' khỏi đối số của mình.

Ngoài ra, hãy kiểm tra trang này để biết cách gỡ lỗi 404 đó khi làm việc với viết lại tùy chỉnh: http://www.dev4press.com/2012/tutorials/wordpress/prreal/debug-wordpress-rewrite-rules-matching/


0

Cảm ơn Olivier. Vấn đề của riêng tôi là add_rewrite_url của tôi đã hoạt động tốt cho các trang nhưng không phải tất cả các bài đăng.

Nó hoạt động cho bài viết nếu chỉ sử dụng %postname%/trong thiết lập permalink. Tôi liên tục bị mất bit sau url bài đăng nếu sử dụng /%category%/%postname%/ tức là http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on giữ 301 chuyển hướng đến http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on vì hành vi chính tắc của wordpress

Dòng dưới đây đã dừng vấn đề này.

remove_filter('template_redirect', 'redirect_canonical');

Tôi nghĩ nó nên được đề xuất trong codex.


Loại redirect_canonicalbỏ loại bỏ chức năng quan trọng . Tôi sẽ đề nghị loại bỏ nó chỉ với sự thận trọng cao độ và như là phương sách cuối cùng.
s_ha_dum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.