Intereting Posts
Программно установить page_on_front Получение списка категорий, а затем использование их в качестве пользовательских ссылок для формы Каков идеальный способ использования памяти WordPress? Файлы PHP, включенные в функции functions.php, не работают из области администрирования Как отправить данные формы из WordPress (Meta Box) в службу OData? Как я могу вызвать конкретную функцию, если запрашиваемый URL не найден? Постоянная ссылка на конкретный шаблон Как добавить пользовательский логотип для всех тем Get_the_term_list необъяснимо добавляет значения в foreach Как отключить Wp-PageNavi в верхней части страницы Крючок после wp_enqueue_scripts Что вы порекомендуете для размещения 10 + отдельных сайтов WordPress? Повторите использование аутентифицированного HTTP-соединения или cUrl-дескриптора Как получить список продуктов с идентификатором категории в WordPress Изображение не отображается в переопределенном адресе woocommerce

Довольно URL-адреса для пользовательского типа сообщения и пользовательской таксономии с дублирующимися слизнями на WPML

Мне интересно получить некоторую помощь для довольно сложной настройки.

Я работаю над публикацией и заинтересован в создании специального подраздела с пользовательской таксономией. Подумайте об этом как о редакционной части с разными категориями – путешествиях, еде, моде и т. Д. Я хочу создать такую ​​установку:

  1. home.com/subsection (архив для всех статей)
  2. home.com/subsection/travel (архив для путешествий по статьям sub_category)
  3. home.com/subsection/travel/post-name (сообщение)
  4. BONUS home.com/subsection/travel/hotels/post-name (сообщение в подкатегории иерархической таксономии)

БОНУС

* пронумеровано для последующей ссылки

Настройка до сих пор …

Это многоязычный сайт на WPML. Я использую настраиваемый тип сообщения (subsection) и таксономию (sub_category) для создания подраздела, потому что я хочу, чтобы статьи были доступны для поиска в одном блоге, но можно фильтровать по пользовательской таксономии на страницах архива (я не хочу путешествовать с основной сайт и подразделение должны быть на одной и той же странице архива). Таможенная таксономия также обеспечивает разделение между таксономией подраздела и основным сайтом.

Проблемы – дублировать слизняки и уродливые URL-адреса

Однако это означает, что у меня есть некоторые новые и некоторые повторяющиеся категории между основным сайтом и этим подразделением. Это означало, что мне пришлось создавать новые пули, такие как travel-sub, чтобы сделать их отличными. Итак, вместо home.com/subsection/travel, у меня будет home.com/subsection/travel-sub.

Использование пользовательских параметров Post Post Permalinks Я смог получить 1 и 3 с измененным slug (travel-sub). Тем не менее, таксономический архив – это home.com/subsection/sub_category/travel-sub, а не home.com/subsection/travel, поскольку я хотел его иметь.

Я понимаю основы того, почему WordPress делает это. Слизы должны быть уникальными, иначе home.com/subsection/travel с дублированной категорией путешествий может относиться к категории проезда основного сайта или подраздела. Тем не менее, контекст в строке url заставляет меня думать, что есть способ сделать правила перезаписи для маршрутизации запроса на WordPress, как я изложил. Фактически я бы хотел, чтобы / subection / travel разобрался с запросом для всех пользовательских сообщений подраздела sub_category, равных путешествиям.

Кто-нибудь знает способ, которым я могу достичь структуры URL, описанной выше?

ОБНОВЛЕНИЕ: Hacky Partial Solution

Лучшее решение для получения URL-адресов в 1, 2 и 3 происходит из этого ответа: пользовательская таксономия, специфичная для типа пользовательской публикации

Однако это не помогает избежать дублирования пули между основным сайтом и подразделением. Получение чистых URL-адресов с дублирующимися слизнями имеет другое решение, которое включает в себя создание пользовательских правил перезаписи для каждого пула.

Как я уже упоминал в своем вопросе, я думал, что есть способ использовать перезаписи для перевода между URL-адресами, которые я хочу, и требованием WordPress запроса. Хотя я не удовлетворен, этот процесс работает. Код в основном из http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/

Эта функция (размещенная в functions.php) повторяет все пользовательские таксономии, связанные с пользовательскими типами сообщений, и генерирует правило перезаписи (комментирует // делает правила). Я изменил код, чтобы поддерживать дублирующие слизни для пользовательской таксономии, удалив строку «-sub» из пользовательского таксономического пула. Таким образом, «поездка-подпункт» для «Путешествия» в моей пользовательской таксономии, связанной с подразделением, становится «путешествием» в URL-адресе, но остается «проезд-юг» в querystring wordpress. Наконец, эти новые правила сливаются с существующими правилами. Сбросьте правила перезаписи, сохранив структуру постоянной ссылки, и вам должно быть хорошо идти.

Однако это не удовлетворяет, поскольку такие функции, как get_category_link, не возвращают структуру довольно url, и без добавления перенаправления 301 будут два URL-адреса, указывающие на один и тот же контент. Кроме того, он не достигает вложенной структуры custom_post_type / tax_term / post_name, которую я хотел бы получить из точки 3 или иерархической структуры.

function taxonomy_slug_rewrite($wp_rewrite) { $rules = array(); // get all custom taxonomies $taxonomies = get_taxonomies(array('_builtin' => false), 'objects'); // get all custom post types $post_types = get_post_types(array('public' => true, '_builtin' => false), 'objects'); foreach ($post_types as $post_type) { foreach ($taxonomies as $taxonomy) { // go through all post types which this taxonomy is assigned to foreach ($taxonomy->object_type as $object_type) { // check if taxonomy is registered for this custom type if ($object_type == $post_type->rewrite['slug']) { // get category objects $terms = get_categories(array('type' => $object_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0)); // make rules foreach ($terms as $term) { $rules[$object_type . '/' . str_replace('-sub', "", $term->slug) . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug; } } } } } // merge with global rules $wp_rewrite->rules = $rules + $wp_rewrite->rules; } add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite'); 

Solutions Collecting From Web of "Довольно URL-адреса для пользовательского типа сообщения и пользовательской таксономии с дублирующимися слизнями на WPML"