Сохранение структуры постоянных ссылок
-
Внезапно столкнулся с проблемой, когда не сохраняется структура категорий в ссылке поста.
Т.е. У меня есть рубрика вида /market/russia/buy/moto.
Но при создании поста в ней ссылка присваивается самой первой родительской категории, а именно /market/%postname%.
Каким образом можно создать пост именно в дочерней рубрике, чтобы ссылка была вида /market/russia/buy/moto/%postname%?
-
Для этого надо создать дочернюю рубрику (АДМИНКА-ЗАПИСИ-ВСЕ ЗАПИСИ-РУБРИКИ).
В редакторе записей, при создании новой записи, в разделе «Рубрики» отметить эту вновь созданную подрубрику, не ставя галочку напротив материнской рубрики
Например:
Есть рубрика «Автомобили»
Создаём к ней подрубрику «Жигули»Пишем новую запись. В редакторе записей, в разделе РУБРИКИ, отмечаем галочкой «Жигули», не ставя галочку в материнской рубрике «Автомобили»
Окей. Как через фронтэнд это передать?
Если имеется в виду меню на главной странице —
Идём в редактор меню. Там в нужном порядке выводим рубрики и подрубрики.Да причем тут редактор то?
http://5.firepic.org/5/images/2014-04/12/fn0dlkln07fg.png
Передается только родительская. То есть первая.
В кодексе на «get_categories» об этом не говорится.
Здесь тоже что то не то совсем. https://codex.wordpress.org/Function_Reference/register_taxonomyЕсли я правильно понимаю, то тут только хуком можно переписывать слуги в ссылке. Или я чего то не догоняю.
Получаю
function get_child_cats() { $parentCat = $_POST['catID']; $result = ''; if ( $parentCat < 1 ) die( $result ); if ( get_categories( 'taxonomy=category&child_of=' . $parentCat . '&hide_empty=0' ) ) { $result .= wp_dropdown_categories( 'show_option_none=' . __( '-- Выбрать --', 'wp' ) . '&class=dropdownlist&orderby=name&name=category[]&id=cat-ajax&order=ASC&hide_empty=0&hierarchical=1&taxonomy=category&depth=1&echo=0&child_of=' . $parentCat ); } else { die( '' ); } die( $result ); }
А дальше то как сохранить последовательность?
Да причем тут редактор то?
Я имею в виду редактор меню
Скриншот
Или мы говорим о разных вещах, не понимая друг друга?Konstantin, да нафига он мне? я же говорю что через фронтэнд хочу передать? я админкой не пользуюсь.
я же говорю что через фронтэнд хочу передать? я админкой не пользуюсь.
Тогда надо более четко формулировать свой вопрос
Окей. Как через фронтэнд это передать?
Куда уж четче?
У меня есть рубрика вида /market/russia/buy/moto.
…
Каким образом можно создать пост именно в дочерней рубрике, чтобы ссылка была вида /market/russia/buy/moto/%postname%?Предполагаю, что используется структура ссылок
/%category%/%postname%/
.Если на скриншоте показана именно иерархическая структура рубрик, то в код, который обрабатывает эту форму, нужно добавить условие, чтобы запись помещалась только в последнюю рубрику, а не во все четыре.
Sergey Biryukov, вот я и спрашиваю как ее правильно отправлять.
//Выпадающий зависимый список wp_dropdown_categories( 'show_option_none=' . __( '-- Выбрать --', 'wp' ) . '&hierarchical=1&hide_empty=0&orderby=name&name=category[]&id=cat-ajax&show_count=0&title_li=&use_desc_for_title=1&class=cat requiredField&depth=1&exclude=' . $exclude ); //Валидация $cat_type == 'normal' && $_POST['category'][0] == '-1' //Отправка через массив $post_category = $_POST['category']; array('post_category' => $post_category)
//Получение дочерних категорий function get_child_cats() { $parentCat = $_POST['catID']; $result = ''; if ( $parentCat < 1 ) die( $result ); if ( get_categories( 'taxonomy=category&child_of=' . $parentCat . '&hide_empty=0' ) ) { $result .= wp_dropdown_categories( 'show_option_none=' . __( '-- Выбрать --', 'wp' ) . '&class=dropdownlist&orderby=name&name=category[]&id=cat-ajax&order=ASC&hide_empty=0&hierarchical=1&taxonomy=category&depth=1&echo=0&child_of=' . $parentCat ); } else {die( '' );} die( $result );}
Куда смотреть?
Куда смотреть?
Если я правильно понял проблему, то смотреть надо в
чтобы запись помещалась только в последнюю рубрику, а не во все четыре.
Т.е. при создании записи, а не при выводе их списка
SeVlad, Да это то понятно. Я не понимаю как она обрабатывается. Функция же имеет название. Если через админку смотреть где чекбоксы. Как определяется что отмечена только последняя из дочерних?
Как определяется что отмечена только последняя из дочерних?
Не последняя, а единственная 🙂 Иначе, если я не ошибаюсь — в урле будет слаг наистаршей (с мин. ID).
Думаю, проще всего добавить фрагмент в
functions.php
активной темы:function add_subcategories_to_permalink( $category, $categories, $post ) { return end( $categories ); } add_filter( 'post_link_category', 'add_subcategories_to_permalink', 10, 3 );
Массив
$categories
уже отсортирован по ID, т.е. мы возвращаем категорию с наибольшим ID, и именно она будет присутствовать в URL.Тогда не будет иметь значения, помещена ли запись во все четыре рубрики или только в последнюю.
- Тема «Сохранение структуры постоянных ссылок» закрыта для новых ответов.