Таксономия: Почему 'with_front' => false НЕ РАБОТАЕТ?
Серьезно, почему 'with_front' => false
не работает как должно? Предполагается, что он должен удалять БАЗОВОЕ ИМЯ ТАКСОНОМИИ, и мой вопрос - почему это не работает?
Я просто не хочу, чтобы базовый слаг таксономии появлялся в моем URL, и в документации говорится, что 'with_front' => false
должен помочь, но он не помогает. Оставление пустого слага как 'slug'=> ''
генерирует ошибку 404.
register_taxonomy("tax_categories", array("products"), array(
"hierarchical" => true,
"label" => "Категории",
"singular_label" => "Категория",
"show_ui" => true,
'update_count_callback' => '_update_post_term_count',
"rewrite" => array(
'with_front' => false,
'hierarchical' => true
)
));
Эта проблема должна была быть исправлена http://core.trac.wordpress.org/ticket/16807
Пожалуйста, помогите разобраться в этом. Спасибо.
Чтобы убрать базовое название таксономии, можно использовать:
'rewrite' => ['slug' => '/', 'with_front' => false]
Однако это вызовет ошибку 404 для ваших (обычных) записей, если у вас установлены постоянные ссылки вида http://example.com/sample-post/
. Похоже, нельзя одновременно разместить и пользовательскую таксономию, и записи в корне сайта. В этом случае нужно перейти в настройки постоянных ссылок и задать произвольную структуру, например /blog/%postname%/
.
Важное замечание
Побочный эффект — ваши пользовательские типы записей (CPT) также получат этот "префикс", например blog/products
. Именно здесь помогает параметр 'with_front' => false
. Он предназначен для отключения использования произвольной структуры в начале URL. Поэтому при регистрации типа записи product нужно указать:
register_post_type( 'products', array(
'rewrite' => array(
'slug' => 'products',
'with_front' => false
),
/* ... */
));

Параметр with_front определяет, может ли ссылка таксономии иметь что-либо перед ней, то есть дополнительные элементы постоянных ссылок из настроек ЧПУ. Например, если with_front установлен в true, возможен такой вариант:
blah.com/2011/09/tax/term
Если он установлен в false, возможен только такой формат:
blah.com/tax/term

В дополнение к сказанному @tf, пожалуйста, объясните почему ваш код предлагает решение.

Выдает ошибку 404, несмотря на то что я пересохранил постоянные ссылки. URL в браузере переписывается (но не в области постоянной ссылки записи), однако в браузере все равно отображается 404.
