Intereting Posts
Наличие логических проблем с помощью специального инструмента (чтение документа Word + URL посещения) Пользовательский запрос WP_Query показывает только 10 сообщений на всех страницах Настройка Рекомендуемое изображение на все должности в тезисе thesis_post_image пользовательского поля? Как отключить WordPress для размещения тегов P? Как создать пользователя, у которого есть разрешение на создание новых сайтов в WordPress с включенной функцией multisite? Как сделать черновик сообщений доступным для всех? get_pages () не заказывает, как следует Параметры Варианты Framework не выводятся Неустранимая ошибка: вызов неопределенной функции is_even () Проблемы с созданием локального экземпляра сайта wordpress Включить как стандартный, так и пользовательский тип публикации в запросе, измененном внутри pre_get_posts WordPress загружает несколько изображений Является ли `query_posts` более медленным, чем вторичный запрос? Как условно помещать таблицу стилей только для определенной страницы (ов)? .BMP Изменение размера изображения в WordPress

Перенаправление 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); }