Tôi có một chút vấn đề kỳ lạ với các quy tắc viết lại không đúng.
Tôi đã thử sử dụng flush_rewrite_rules();
và flush_rewrite_rules(true);
.
Tôi cũng đã thử toàn cầu hóa $wp_rewrite
bằng cách sử dụng $wp_rewrite->flush_rules();
và$wp_rewrite->flush_rules(true);
Không ai trong số đó dường như đang tuôn ra các quy tắc viết lại chính xác. Những cuộc gọi đó thực sự tuôn ra các quy tắc viết lại khi được gọi. Làm thế nào để tôi biết điều này? Sử dụng giải pháp để gỡ lỗi quy tắc viết lại tuôn ra .
Hiện tại, tôi đã viết lại các quy tắc tuôn ra khi kích hoạt plugin và hủy kích hoạt plugin. Không có vấn đề ở đó.
Tôi có một trang cài đặt quản trị plugin để người dùng định cấu hình plugin. Một số cài đặt điều chỉnh cấu trúc permalink, do đó, các quy tắc viết lại được yêu cầu phải được xóa trên trang cài đặt quản trị plugin "Lưu cài đặt". (Sử dụng tiêu chuẩn update_option();
) để lưu cài đặt.
Tôi muốn lưu ý rằng tùy thuộc vào cài đặt được chỉ định, các loại bài đăng tùy chỉnh được tạo để phù hợp với cài đặt do người dùng chỉ định. Vì vậy, các quy tắc viết lại phải được xóa ngay lập tức sau khi các cài đặt được lưu. Đây là nơi mọi thứ không hoạt động thích hợp.
Giải pháp liên kết ở trên để gỡ lỗi các quy tắc viết lại được cung cấp bởi @toscho
đang hiển thị rằng nó đang tuôn ra hàng tấn quy tắc viết lại. Tuy nhiên, khi truy cập vào mục đơn lẻ loại bài đăng tùy chỉnh hoặc thậm chí lưu trữ loại bài đăng tùy chỉnh cho vấn đề đó, mỗi lần trả về là lỗi 404.
Loại bài tùy chỉnh được đăng ký chính xác và thích hợp. Tôi biết chắc chắn đó không phải là vấn đề.
Ngay lập tức làm theo với các cài đặt trang quản trị plugin lưu. Các loại bài tùy chỉnh được tạo, cấu trúc permalink được điều chỉnh và tất cả các quy tắc viết lại được cố gắng để được xóa.
Các loại bài tùy chỉnh sau đó được tải luôn và được tải init
như bình thường.
Vì một số lý do, các quy tắc viết lại không được xóa đúng cách, vì như tôi đã nói trước đây, truy cập các phần đơn lẻ hoặc lưu trữ của loại bài đăng tùy chỉnh trả về lỗi 404.
Bây giờ phần kỳ lạ, nếu tất cả những gì tôi làm chỉ đơn giản là truy cập trang cài đặt permalinks của chính quyền, sau đó quay lại giao diện người dùng để xem các phần đơn lẻ hoặc lưu trữ của loại bài đăng tùy chỉnh, chúng sẽ hoạt động một cách kỳ diệu như mong đợi.
Trang cài đặt permalinks quản trị đó làm gì mà tôi không làm điều đó cho phép các quy tắc viết lại tuôn ra một cách thích hợp và của tôi thì không?
Ý tôi là, như một giải pháp tạm thời, tôi đang chuyển hướng người dùng đến trang cài đặt permalinks quản trị sau khi lưu trang cài đặt quản trị plugin, nhưng đây không phải là một giải pháp lý tưởng. Tôi muốn các quy tắc viết lại chỉ cần tuôn ra đúng trong mã của plugin của tôi.
Có một điểm nào đó trong WordPress khi việc xóa các quy tắc viết lại chỉ không xóa TẤT CẢ các quy tắc nữa?
admin_menu
- Trang cài đặt Plugin được thêm vào quản trị WordPress.
add_options_page()
- Trang cài đặt Plugin được thêm vào trong menu Cài đặt.
Trang cài đặt được hiển thị trong cuộc gọi lại cho add_options_page()
. Đây cũng là nơi $_POST
được xử lý để cập nhật cài đặt plugin và xóa quy tắc viết lại.
Vì đây đã là một câu hỏi dài, tôi sẽ sẵn sàng cung cấp các khối mã (nếu nó giúp) trong một liên kết ngoại vi để hỗ trợ tạo ra một câu trả lời hợp lệ.
init
đó đăng ký các loại bài. Tôi hình dung, các cài đặt trang đang được lưu và trang sẽ tải lại ... sau đó bắn lại init
hook để đăng ký các loại bài đăng cần thiết. Vì vậy, tôi đã tìm ra các loại bài đăng đã được tải và tất cả những gì tôi cần làm là cập nhật tùy chọn, sau đó xóa các quy tắc viết lại từ trang cài đặt plugin của tôi. Tôi sẽ đăng câu trả lời về cách tôi tìm ra giải pháp.
flush_rewrite_rules
, chỉ cần xóarewrite_rules
tùy chọn và tạo lại nó, bạn có thể mở tệpwp-admin/options-permalinks.php
và xem điều này xảy ra ở đâu. vì thao tác này chỉ xóa toàn bộ tùy chọn, nên không thể xóa một phần quy tắc.