Перенаправление URL-адресов необходимо активировать вручную для моего плагина

Я создаю плагин WordPress, который создает страницы (с get_header() , get_footer() и get_sidebar() ) для поиска через API.

Конечно, я определил некоторые правила для перезаписи URL следующим образом:

 function init() { global $wp_rewrite; add_rewrite_rule('my_plugin/(.+)/results?', 'index.php?my_plugin=results&data=$matches[1]', 'top'); ... $wp_rewrite->flush_rules(); } 

Эта функция вызывается с этой строкой в ​​конструкторе моего плагина:

 add_action('init', array(&$this, 'init')); 

Плагин работает отлично, но мне нужно активировать вручную переписывание URL-адресов в « Настройки»> «Перманентные» в моей панели управления Admin. Мне нужно только выбрать один из вариантов: День и имя , Месяц и имя , Числовое , … (независимо).

Проблема в том, что когда я устанавливаю плагин на новый WordPress с отключением Permalinks (по умолчанию ), я получаю всегда ошибку 404 . Это будет работать, только если я активирую вручную Permalinks.
(Я знаю, что это делается с помощью .htaccess ).

Есть ли способ обойти это или автоматически активировать Permalinks через мой плагин?
Другое хорошее решение приветствуется.

Надеюсь, мой вопрос ясен.
Спасибо.

Solutions Collecting From Web of "Перенаправление URL-адресов необходимо активировать вручную для моего плагина"

Всякий раз, когда я создаю плагин, который требует наличия постоянных ссылок, я проверяю активацию плагина, и если он не установлен, я показываю сообщение для пользователя:

 // Add Check if permalinks are set on plugin activation register_activation_hook( __FILE__, 'is_permalink_activate' ); function is_permalink_activate() { //add notice if user needs to enable permalinks if (! get_option('permalink_structure') ) add_action('admin_notices', 'permalink_structure_admin_notice'); } function permalink_structure_admin_notice(){ echo '<div id="message" class="error"><p>Please Make sure to enable <a href="options-permalink.php">Permalinks</a>.</p></div>'; } 

Я нашел код.

 modify_permalinks('/%postname%/','',''); function modify_permalinks($permalink_structure, $category_base, $tag_base){ global $wp_rewrite; require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/misc.php'); # get paths $home_path = get_home_path(); $iis7_permalinks = iis7_supports_permalinks(); # set the structure $permalink_structure = preg_replace('#/+#', '/', '/' . $permalink_structure); $wp_rewrite->set_permalink_structure($permalink_structure); $category_base = preg_replace('#/+#', '/', '/' . $category_base); $wp_rewrite->set_category_base($category_base); $tag_base = preg_replace('#/+#', '/', '/' . $tag_base); $wp_rewrite->set_tag_base($tag_base); # check if there is a file to rewrite if ( $iis7_permalinks ) { if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') ) $writable = true; else $writable = false; } else { if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') ) $writable = true; else $writable = false; } # flush the rules update_option('rewrite_rules', FALSE); $wp_rewrite->flush_rules($writable); }