Нужна помощь при перезаписи permalink для пользовательских типов сообщений с иерархическими отношениями

Я работаю над веб-сайтом с несколькими пользовательскими типами сообщений, которые являются отдельными, но связанными (например, сериями, эпизодами, видео).

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

Структурно, что, похоже, работает нормально, но у меня проблемы с постоянными ссылками.

По умолчанию WordPress отображает URL-адреса следующим образом:

Архив серии и один вход (OK):

домен / серия /

серия имя домена / серия / /

Индивидуальный эпизод (не в порядке):

/ / Эпизод имя / домен эпизодов /

С этой постоянной ссылкой не ясно, с чем связана серия Эпизода. И в некоторых случаях, когда эпизоды имеют одно и то же имя (например, «Пилот», вы получаете автогенерируемые имена, такие как «пилот-2» и «пилот-3».

Желаемая структура URL для отдельного эпизода (или видео)

/ / Эпизод имя / / серия имя домена / серия эпизодов /

серия-имя / домен / серия / / видео / видео / имя

Я попытался собрать часть кода для этого, основываясь на некоторых сообщениях в блогах, которые я нашел в Интернете, но он не работает. Вот код, который я сейчас пытаюсь сделать:

function custom_rewrites() { global $wp_rewrite; add_rewrite_tag('%episodename%', '([^&]+)', 'episodes='); add_permastruct('episodes', '/series/series_placeholder/episodes/%episodename%', false); add_rewrite_rule('^episodes/([^/]*)/([^/]*)/?','index.php?series=$matches[1]&episodes=$matches[2]','top'); } add_action( 'init', 'custom_rewrites', 10, 0 ); 

Я чувствую, что я вроде как близко, но я явно чего-то пропускаю (или несколько вещей).

Любая помощь приветствуется!

Solutions Collecting From Web of "Нужна помощь при перезаписи permalink для пользовательских типов сообщений с иерархическими отношениями"

Я думаю, что лучше связаться с таксономическими терминами. Поскольку вы можете добавлять любые настраиваемые поля к терминам с помощью ACF / другого плагина / кода, можно использовать термины с изображениями, полное описание и т. Д.

У меня была схожая задача, этот урок должен быть полезен https://rudrastyh.com/wordpress/taxonomy-slug-in-post-type-url.html . Да, я знаю, что нет иерархии, но я хочу показать вам другой принцип реализации вашей задачи.

На самом деле, чтобы добавить иерархию, вам просто нужно изменить порядок в этой части кода:

 $terms = wp_get_object_terms( $post->ID, $tax_name ); 

И добавьте их в эту часть:

 $permalink = str_replace( $post_type_slug, $terms[0]->slug . '/' . $terms[0]->slug, $permalink ); 

Если у вас есть конкретный вопрос – спросите в комментариях – здесь или там, как вы хотите. Я постараюсь вам помочь.