Как очистить правила перезаписи при активации любого плагина

Я создал функцию в functions.php, которая добавляет некоторые правила перезаписи:

function add_rewrite_rules() { add_rewrite_rule('events/page/([0-9])*/?', 'index.php?pagename=events&paged=$matches[1]', 'top'); [...] global $wp_rewrite; $wp_rewrite->flush_rules(); } 

Я хотел бы выполнять его каждый раз, когда любой плагин активирован, поэтому, если новые правила будут перезаписаны, я могу восстановить их автоматически. Является ли это возможным?

Спасибо.

Solutions Collecting From Web of "Как очистить правила перезаписи при активации любого плагина"

  1. Добавьте правила перезаписи на крючок инициации.

  2. В своей личной функции активации: a) добавьте правила перезаписи и b) очистите правила перезаписи. Один раз. Это единственный раз, когда вам нужно сбросить правила.

В качестве альтернативы, если ваши правила перезаписи могут меняться с помощью пользовательского ввода, вам необходимо сбросить их, когда правила изменятся, а не в любое другое время. Однако вам все равно нужно добавить их в init .

Прикрепите свою функцию к крючку init чтобы он всегда присутствовал,

 function wpd_add_rewrite_rules() { add_rewrite_rule('events/page/([0-9])*/?', 'index.php?pagename=events&paged=$matches[1]', 'top'); } add_action( 'init', 'wpd_add_rewrite_rules' ); 

См. Примеры в Codex для flush_rewrite_rules для того, где можно flush_rewrite_rules правила, когда вы их добавили, либо в активации плагина, либо в теме. Не перезагружайте правила перезаписи на init .

Интересно, будет ли это работать:

 add_action( 'activated_plugin', function(){ // your stuff here }, PHP_INT_MAX ); 

где activated_plugin hook_plugin после активации плагина.