Во-первых, указывать путь таким образом - плохая идея, потому что если по какой-либо причине что-либо из этого изменится, ваш плагин / тема разрушится.
Ozh делает отличное предложение в разделе Твердо закодированные пути , насколько это возможно ...
Во-вторых, вам, скорее всего, будет лучше использовать * query_vars *. Посмотрите на http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpress-url/ и, возможно, даже http://planetozh.com/blog/2011/01/pretty-login-url-a-simple-rewrite-api-plugin-example/, чтобы найти примеры того, как это сделать.
Также ознакомьтесь с классом WP_Rewrite , поскольку он содержит наилучшую информацию об обработке перезаписи URL в WordPress.
В-третьих, вам нужно подключить вашу функцию setRewriteRules()
к ловушке init , поскольку при первом сбросе правил ваши правила будут удалены.
Итак, ваш код будет выглядеть примерно так (без каких-либо других исправлений):
register_activation_hook(__FILE__,'activate');
register_deactivation_hook(__FILE__,'deactivate');
add_action('init', 'setRewriteRules');
function setRewriteRules()
{
add_rewrite_rule( 'plugin-url/$', '/wp-content/plugins/my-plugin/page.php', 'top' );
}
function activate()
{
setRewriteRules();
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
function deactivate()
{
global $wp_rewrite;
$wp_rewrite->flush_rules(true);
}
Перезапись правила очистки
Вот несколько советов по сбросу правил перезаписи ...
- Правила перезаписи автоматически сбрасываются при каждом посещении Настройки> Постоянная ссылка или при каждом внесении и сохранении изменений в области администратора.
- Добавление
add_action('admin_init', 'deactivate');
также может быть полезным, поэтому они сбрасываются при каждой загрузке страницы администратора.