Intereting Posts
Co Authoring с разными позициями wordpress – ajax communication Предупреждение: getimagesize () : http: // оболочка отключена в конфигурации сервера allow_url_fopen = 0 Проблема с сохранением пользовательского типа сообщения при удалении редактора Использование $ wpdb для запуска инструкции mysql, пустой вывод Опубликовать специальный текст на основе отображаемой категории Когда вы будете использовать $ _post вместо $ post? Условно Убрать ссылку меню навигации, если сеанс активен Шаблон плагина для сообщений в блоге? Получите пользовательский пул сообщений, но удалите префикс перезаписи? Опции для CDN с WordPress, включая поддерживающие плагины? Пользовательская таксономия скрывает мета-окно, но отображается в меню Регистрация пользователя в настоящее время не разрешена отключить столбец в столбце и списке пользователей Применять template_include для работы, когда allow_url_include отключен?

Перенаправление 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 через мой плагин?
Другое хорошее решение приветствуется.

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

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

 // 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); }