Родительский cpt / дочерний пользовательский тип сообщения URL-ссылка

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

Я создал два пользовательских типа post_cpt и solution_offering_cpt . Между отношениями «solution_cpt» и «solution_offering_cpt» существует от одного до многих. Другими словами, у каждого «solution_offering_cpt» никогда не будет более одного родителя «solution_cpt» . Это взаимно-однозначное отношение.

То, как я отношу каждое сообщение «solution_offering_cpt» к его родительскому сообщению pseudo «solution_cpt», имеет пользовательскую таксономию. Каждый раз, когда создается сообщение «solution_cpt», у меня есть функция, которая создаст новый термин и добавит его в мою обычную таксономию. Конечно, если сообщение «solution_cpt» удаляется позднее, тогда у меня также есть функция, чтобы удалить этот термин из таксономии.

Структура URL, которую я пытаюсь создать:

/solution/solution_cpt/solution_offering_cpt 

Первый уровень /solution/solution_cpt работает и указывает на правильную запись на сайте. (Страница, которую он использует в моей теме, это «single-solution_cpt.php».) Это URL-адрес второго типа сообщения (т.е. /solution/solution_cpt/solution_offering_cpt . /solution/solution_cpt/solution_offering_cpt ), который работает некорректно и дает мне ошибку 404. (PS. Я несколько раз покрасил свои постоянные ссылки.)

Вот как я зарегистрировал свои два пользовательских типа сообщений и настроил свою обычную таксономию:

 // Register post types function ta_create_post_types() { register_post_type('solution_cpt', $labels, 'hierarchical' => false, 'public' => true, 'has_archive' => false, 'rewrite' => array('slug' => 'solution'), 'capability_type' => 'post' ); register_post_type('solution_offering_cpt', $labels, 'hierarchical' => false, 'public' => true, 'has_archive' => false, 'rewrite' => array('slug' => 'solution/%solution_cat%'), 'capability_type' => 'post' ); } add_action('init', 'ta_create_post_types', 0); // Create custom taxonomy function ta_create_custom_taxonomies() { register_taxonomy('solution_cats', array('solution_cpt', 'solution_offering_cpt'), $labels, 'hierarchical' => true, 'query_var' => true, 'rewrite' => array('slug' => 'solution') ); } add_action('init', 'ta_create_custom_taxonomies', 0); 

У меня также есть две функции, которые управляют добавлением и удалением терминов из пользовательской таксономии «solution_cats», когда новое сообщение «solution_cpt» создается или удаляется с уважением. Я могу опубликовать этот код, если это кому-то поможет. … просто хотел, чтобы этот первоначальный запрос был как можно короче.

Обратите внимание: что созданные термины имеют зеркальные заголовки и пули созданного «solution_cpt». Так, например, если бы я должен был создать сообщение «solution_cpt» в заголовке «Услуги креатива», тогда автоматически будет создан термин и добавлен в таксономию с названием «Креативные услуги», а его набор слитков – Сервисы".

Я предполагаю, что мне нужно использовать API перезаписи WordPress для привлечения структуры URL, в которой я нуждаюсь. Опять же, эта структура:

 /solution/solution_cpt/solution_offering_cpt 

Вот текущий код перезаписи, который у меня есть:

 // Build the 'solution_offering_cpt' URL function ta_add_rewrite_rules() { global $wp_rewrite; $wp_rewrite->add_rewrite_tag('%solution_cat%', '([^/]+)', 'solution_cat='); $wp_rewrite->add_permastruct('offering', 'solution/%solution_cat%', false); } add_action('init', 'ta_add_rewrite_rules'); function filter_solution_offering_cpt_link($link, $post) { if ($post->post_type != 'solution_offering_cpt') return $link; if ($cats = get_the_terms($post->ID, 'solution_cats')) $link = str_replace('%solution_cat%', array_pop($cats)->slug, $link); return $link; } add_filter('post_type_link', 'filter_solution_offering_cpt_link', 10, 2); 

Все, что я получаю, это ошибка 404 при попытке перейти к сообщению «solution_offering_cpt» . Например, я создал сообщение «solution_cpt» заголовка «Креативные услуги» и slug «creative-services», а также сообщение «solution_offering_cpt» заголовка «UI / UX» и slug «ui-ux».

Когда я перехожу к /solution/creative-services/ui-ux я получаю ошибку 404. Я покраснел. Не знаю, где я ошибаюсь, но я уверен, что мои перезаписи отключены. API-интерфейс WordPress Rewrite – это медведь, и документация ужасна! Был бы очень признателен за помощь этим парням и парням. Благодаря!