Intereting Posts
Содержимое страницы запроса из параметров темы? Как я могу вызвать функцию PHP внутри жесткокодированного кода? Где WordPress Mu DB хранит ссылку панели управления сетевого администратора Уведомление по электронной почте о новом сообщении включает код изменение wp-admin / widgets.php Как отключить все учетные записи на клиентской стороне без отключения новых учетных записей пользователей? Действие формы не работает, если slug не такой же, как пользовательский заголовок сообщения Изменить «сообщения на страницу» в зависимости от ширины Мне нужно изменить исходный код с моей статической страницы Получить зарегистрированную страну или IP-адрес Прямая форма для настраиваемого шаблона страницы Вывод страницы из меню Как разбивать список дочерних страниц Попытка отключить плагины не работает Как захватить аргумент GET на статической странице

add_rewrite_rules префикс все

Мне нужно настроить структуру перезаписи WP, в которой я префикс всех URL-адресов с помощью настраиваемого (динамического) префикса.

Таким образом, URL-адреса будут выглядеть так:

www.example.com/myprefix1/

www.example.com/myprefix2/

www.example.com/myprefix1/a-page

www.example.com/myprefix1/a-category

www.example.com/myprefix1/a-cpt

www.example.com/myprefix2/a-cpt

и т.п.

До сих пор я придумал это:

$options = implode( array('myprefix1','myprefix2', '|' ); // my prefix options // add a rule for each registered post type (??) foreach($postTypes as $postType){ $new_rules['(' . $options . ')/(.+?)/?$'] = 'index.php?post_type='.$postType.'&' . self::$sitePrefixName . '='. $wp_rewrite->preg_index(1).'&pagename='. $wp_rewrite->preg_index(2); } // add a rule for the home page (?) $new_rules['(' . $options . ')/?$'] = 'index.php?' . self::$sitePrefixName . '='. $wp_rewrite->preg_index(1); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; 

Это работает, но я считаю, что таксономии здесь не включены. Я стараюсь сделать это максимально гибким, чтобы будущие CPT, налоги и т. Д. Также работали.

Правильно ли я здесь делаю или есть другие способы сделать это?

Thanx!

Solutions Collecting From Web of "add_rewrite_rules префикс все"

Вы когда-нибудь рассматривали использование фильтра rewrire_rules_array для изменения $ rewrite_rules?

  /** * Example of Changing All Rewrite Rules * * @param array $rewrite_rules The compiled array of rewrite rules. * @return array The compiled array of rewrite rules (altered). */ function wpse_263624_rewrite_rules_example( $rewrite_rules ) { $prefixes = array( 'otro', 'esto' ); $prefix_regexp = '(' . implode( '|', $prefixes ) . ')/'; $new_rewrite_rules = array(); $match_pattern = '/\$matches\[(\d)\]/si'; foreach ( $rewrite_rules as $rewrite_rule => $match ) { // Incrementing $match becaouse prefixes goes as capturing group. $new_match = preg_replace_callback( $match_pattern , function( $m ){ return sprintf('$matches[%d]', $m[1] + 1); }, $match); // Adding Prefix Group and New Value for our match. $new_rewrite_rules[ $prefix_regexp . $rewrite_rule ] = $new_match; } return $new_rewrite_rules; } add_filter( 'rewrite_rules_array', 'wpse_263624_rewrite_rules_example' ); 

Это заканчивается чем-то вроде этого ..

изменен массив правил перезаписи