Intereting Posts
Как удалить доступ к панели управления из определенных ролей пользователей? Не показывать html, если функция ничего не возвращает Проверить, есть ли у должности категория Как изменить направление порядка запросов с помощью $ query-> set ('order', 'ASC'); внутри фильтра pre_get_posts? Пользовательская переписывание с помощью Query vars Изменить тип возможности типа сообщения, зарегистрированного плагином Использование WordPress за заказным распределением CloudFront Удаление некоторых страниц из поиска новый WP_Query испортил разбивку на страницы Показывать рекламу по местоположению Запрос / список всех условий и их счетчик сообщений Добавить категорию в мой запрос get_post Использование JQuery для проверки атрибута Rel для изображения перед его переопределением Оптимизация стилей и скриптов WordPress Удаление любых и всех встроенных стилей из поля the_content ()

rewrite_rules () не применяет правила активации плагина только после того, как щелкнуто меню постоянных ссылок

благодаря Роману, который указал мне в правильном направлении, мой плагин почти готов. Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу заставить rewrite_rules применять при активации, они работают только после того, как я перейду в меню администратора WordPress, перейдите на страницу настроек Permalinks и нажмите «Сохранить изменения», затем все будет работать.

Я использую rewrite_rules_array, чтобы поместить мои правила перезаписи плагина наверху, но это не вызвано активацией плагина, поскольку addRewriteRules ожидает существующий массив из механизма WordPress. Если бы вы указали, как это активировать, приведенная ниже версия плагина приведена ниже. Спасибо заранее, Крис.

class JFormerForWP { static $errors = false; /* for debugging */ const DB_VERSION = 1; // This number represents the current version of the plugins table structure. Increment this every time you modify the scheme of the database tables that you create for your plugin. static $pluginPath; static $pluginUrl; static $registry; /* called each request */ public static function init() { self::$pluginPath = dirname(__FILE__); // Set Plugin Path self::$pluginUrl = WP_PLUGIN_URL . '/jformer-for-wp/'; // Set Plugin URL add_filter( 'rewrite_rules_array', array(__CLASS__,'addRewriteRules')); add_filter( 'query_vars', array(__CLASS__, 'addQueryVars')); add_action( 'template_redirect', array(__CLASS__, 'formDisplay')); add_action('wp_print_styles', array(__CLASS__, 'styles')); add_action('wp_print_scripts', array(__CLASS__, 'scripts') ); add_shortcode('jformer', array(__CLASS__, 'shortcodeHandler')); /* for ajax functionality */ add_action('wp_ajax_nopriv_jFormerForWp', array(__CLASS__, 'ajaxHandler')); add_action('wp_ajax_jFormerForWp', array(__CLASS__, 'ajaxHandler')); self::$errors = new WP_Error(); } public static function addRewriteRules($rules) { $newRules = array( 'forms/?([^/]*)' => 'index.php?formid=$matches[1]', ); return $newRules + $rules; // add the rules on top of the array } public static function addQueryVars($vars) { $vars[] = 'formid'; return $vars; } public static function formDisplay() { if( $formid = get_query_var( 'formid' ) ) { $formCode = self::getForm($formid); if($formCode != -1) { include ( self::$pluginPath . '/html/redirect-page-header.php' ); echo $formCode; include ( self::$pluginPath . '/html/redirect-page-footer.php' ); exit; } } } public static function activate() { flush_rewrite_rules(); } /* This function will run when the user deactivates the plugin from the WordPress Plugin screen. You might want to put some code in here to remove the tables and options that your plugin created, but, if you do that here, and the user reenables your plugin, they will lose all the data and settings they had previously set. Your alternative, is to create an uninstall.php file and place your cleanup code in there. This code is run when the user deletes your plugin. Open uninstall.php to see how this file works. */ public static function deactivate() { flush_rewrite_rules(); } } register_activation_hook(__FILE__, array('JFormerForWP','activate')); register_deactivation_hook(__FILE__, array('JFormerForWP','deactivate')); add_action('init', 'JFormerForWP::init'); 

Solutions Collecting From Web of "rewrite_rules () не применяет правила активации плагина только после того, как щелкнуто меню постоянных ссылок"

Если я должен был догадаться?

rewrite_rules_array активации плагина rewrite_rules_array до rewrite_rules_array фильтра rewrite_rules_array , в результате чего правила стираются, прежде чем вы вносите изменения в них.

См. Здесь рекомендацию , рекомендованную Codex , с помощью wp_loaded action hook.

Да еще используйте flush_rewrite_rules() при активации