Вопрос или проблема
Я бы хотел создать следующую структуру таксономии:
site.com/courses/course-name/pathway/pathway-name
Домен устроен так, что любой конкретный курс можно пройти, выбрав несколько разных путей – различные структуры модулей.
Эти URL будут работать следующим образом:
site.com/courses
показывает список курсов
site.com/courses/course-name
будет следовать шаблону, например, single-course.php, показывая заголовок, содержимое и список путей, связанных с этим курсом.
site.com/courses/course-name/pathways/
будет следовать шаблону, например, archive-pathway.php, показывая имя курса и список путей (не используется часто, но все равно должен работать)
site.com/courses/course-name/pathways/pathway-name
будет следовать шаблону, например, single-pathway.php, показывая заголовок курса, заголовок пути и содержимое для этого пути.
В файлах здесь может быть ошибка, в которой я должен использовать taxonomy-{}.php или подходящий вариант вместо single-{}.php.
Мой вопрос: возможно ли настроить вышеуказанную иерархию в WordPress? Если это возможно, пожалуйста, предоставьте код для register_taxonomy
или register_post_type
, чтобы помочь мне начать.
Я не могу найти, как это сделать в другом месте, но я почти уверен, что именно так курсы в сети TutsPlus используют WordPress.
В итоге я использовал плагин Subordinate Post Type Helpers, чтобы создать взаимосвязи между двумя разными типами пользовательских постов: courses
и pathways
Я не совсем уверен, поможет ли это точно с тем, что вы ищете, но вот иерархия шаблонов WP. Лично для меня это решает многие вопросы и служит отличной справочной точкой.
Ответ или решение
Создание иерархической структуры пользовательских типов записей в WordPress может показаться сложной задачей, особенно если ваш проект предполагает сложные связи между различными уровнями данных, такими как курсы и пути их прохождения. В данном случае, нам необходимо настроить систему, в которой курсы могут быть связаны с несколькими путями, что требует достаточно гибкой и детальной настройки.
Теория
В WordPress все строится вокруг концепции "Записей" и "Таксономий", которые можно кастомизировать с помощью функций register_post_type
и register_taxonomy
. Пользовательские типы записей (Custom Post Types) позволяют создавать новые типы контента помимо стандартных "Постов" и "Страниц". Например, тип записи "courses" можно настроить для ваших курсов. Таксономии, в свою очередь, используются для классификации и структурирования содержания; например, таксономия "pathway" может описывать отдельные пути для каждого курса.
Пример
-
Регистрация пользовательского типа записей "courses":
function create_course_post_type() { $labels = array( 'name' => __('Courses'), 'singular_name' => __('Course'), ); $args = array( 'labels' => $labels, 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'courses'), 'supports' => array('title', 'editor', 'thumbnail', 'excerpt'), ); register_post_type('courses', $args); } add_action('init', 'create_course_post_type');
-
Регистрация пользовательского типа записей "pathways":
function create_pathway_post_type() { $labels = array( 'name' => __('Pathways'), 'singular_name' => __('Pathway'), ); $args = array( 'labels' => $labels, 'public' => true, 'rewrite' => array('slug' => 'pathways'), 'supports' => array('title', 'editor', 'thumbnail'), ); register_post_type('pathway', $args); } add_action('init', 'create_pathway_post_type');
-
Создание связи между курсами и путями:
Для реализации отношения "Многие ко многим" между курсами и путями можно использовать мета-поля или сторонние плагины, такие как Advanced Custom Fields или Custom Post Type Relationships (Subordinate Post Type Helpers), которые обеспечивают интерфейс для создания таких связей. Вы уже упомянули, что используете Subordinate Post Type Helpers, и это действительно может эффективно упростить задачу.
Применение
С запуском вышеуказанных функций вы создадите в WordPress два новых типа записей: "Courses" и "Pathways". Каждому курсу можно будет присвоить множественные пути на основе созданной иерархии. Страницы и архивы этих типов записей можно кастомизировать с помощью шаблонов, таких как:
single-course.php
— шаблон для отображения отдельного курса с информацией о доступных путях.single-pathway.php
— шаблон для отображения информации о конкретном пути и связанном курсе.archive-course.php
иarchive-pathway.php
— шаблоны архивов, которые показывают список всех курсов и путей соответственно.
При настройке URL-структуры важно учесть, что цепочка вложенности должна быть равномерной, что означает, что пути к отдельным элементам структуры должны быть логичными и соответствовать иерархическому порядку. Это имеет значение не только для SEO, но и для удобства работы с сайтами пользователям.
Требуемая иерархия и вложенные URL смогут быть реализованы корректной структурой, при условии тщательного тестирования всех возможных сценариев использования и навигации. Следует убедиться, что каждая страница и архив отображаются правильно и соответствуют ожиданиям как пользователя, так и требований проекта.
Подводя итог, грамотная организация иерархии пользовательских типов записей в WordPress позволяет выгрузить содержимое по требуемой структуре и улучшить взаимодействие пользователя с ресурсом, гарантируя, что каждая часть контента находится на своем месте и доступна по интуитивно понятным путям.