Tôi đang viết một plugin khởi tạo một loại bài đăng tùy chỉnh (trong số những thứ khác). Nó là một plugin nhiều trang và nằm trong thư mục mu-plugins .
Cách thực hành tốt nhất để xử lý flush_rewrite_rules () trong tình huống này là gì? Đối với một plugin 'bình thường', bạn sẽ thực hiện điều này trong một hook kích hoạt - điều này sẽ không thể thực hiện được đối với một plugin phải sử dụng vì những hook đó không có sẵn.
Vì đây được coi là sự kiện "một lần" sau khi đăng ký loại bài đăng tùy chỉnh, sẽ có ý nghĩa khi làm điều gì đó như thế này trong lớp của tôi đăng ký CPT:
private function check_flush_my_CPT() {
global $wp_rewrite;
if ( !get_option('my_plugin_firstrun') ) {
$wp_rewrite->init();
$wp_rewrite->flush_rules(true);
update_option('my_plugin_firstrun', 'yes');
}
}
public function register_my_CPT() {
// do all the CPT setup steps for the $args array...
register_post_type('my_CPT', $args);
$this->check_flush_my_CPT();
}
add_action( 'init', array(&$this, 'register_my_CPT' ) );
Vì vậy, đăng ký CPT xảy ra trên mọi hành động 'init' - nhưng nếu tôi có quyền này, quy tắc viết lại sẽ chỉ xảy ra một lần. Bao giờ .
Có phải tôi đang trên đường ray bên phải không?
(chỉnh sửa): Tôi vừa thử nó; CPT của tôi đang đưa ra một lỗi 404 không tìm thấy, vì vậy các quy tắc viết lại không hoạt động :-(
(chỉnh sửa # 2): Tôi đã thử giải pháp truy cập biến toàn cục như trong câu hỏi này: Làm thế nào để xóa các quy tắc viết lại trên multisite một cách đáng tin cậy? - Tôi sẽ cập nhật ví dụ mã của tôi ở trên để hiển thị điều này. Thật không may, tôi vẫn gặp lỗi 404 khi thử tải CPT. Tôi thấy rằng các quy tắc viết lại đang được lưu trữ trong cơ sở dữ liệu, có vẻ như chúng không được sử dụng. Tôi bị lạc