- Вопрос или проблема
- Ответ или решение
- 1. Понимание пользовательских типов записей
- 2. Проблема с URL-адресами
- 3. Связывание пользовательских типов записей с страницами
- A. Использование пользовательских полей и ссылок
- B. Динамическое отображение записей
- C. Ярлычные страницы (Custom Taxonomy)
- 4. Удобство поддержки
- Заключение
Вопрос или проблема
Причина, по которой я спрашиваю, заключается в том, что когда я создаю страницы, они не вставляют привычное название типа записи, как это делают CPT.
Например, если я создаю страницу под названием toyota
, URL будет http://domain.com/toyota
, но если я создам пользовательский тип записи, чтобы ввести все марки на одной странице с пользовательскими ссылками на конкретные страницы на моем сайте и скажем, что этот CPT называется Cars
, тогда URL будет выглядеть так: http://domain.com/cars/toyota
, и поэтому не будет правильно ссылаться на страницу.
Существует ли способ обойти это?
Я считаю, что ответ — да и нет, и вероятно несколько вариантов каждого, но вот что я узнал.
Конечно, вы можете ссылаться на внешние сайты и страницы через любой WYSIWYG-редактор, который вы добавляете в качестве пользовательского поля в CPT, вы даже можете сделать то же самое, добавив внешнюю ссылку в обычное текстовое поле, так что это мой голос “да”.
Нет, потому что это не лучший способ использования CPT, потому что, и это исключительно из моего не такого уж длинного опыта в разработке тем с WP, когда вы создаете CPT, это делается для того, чтобы вы могли добавлять пользовательские поля ввода, изображения, выбор цвета и т. д. и группировать их соответствующим образом, чтобы вы могли создать несколько записей, которые будут отображать тот самый контент, но каждая будет иметь свою уникальную версию этого контента.
Итак, если вы собираетесь создать CPT под названием Neighborhoods, который всем нужен изображения, написанный контент, пользовательские области контента и т. д., вы создадите это один раз, а затем “Добавить новый район”, чтобы дать этому району уникальное название, уникальные изображения и контент и т. д., и в конечном итоге вызвать эту конкретную страницу каким-то образом на своем сайте и даже ссылаться на нее из другой части вашего сайта, или добавить ее в пользовательский запрос, если вы присвоили ей таксономию. Таким образом, ручная ссылка определенно не является лучшим вариантом с точки зрения обслуживания, вам нужно, чтобы страницы динамически ссылались на соответствующий контент.
Я бы создал страницу под названием Toyota, а затем использовал бы блок запросов, чтобы отобразить пользовательский тип записи.
Ответ или решение
Да, вы действительно можете связать пользовательские типы записей (Custom Post Types, CPT) со страницами в WordPress, но с определёнными ограничениями и лучшими практиками использования. Давайте более подробно рассмотрим этот вопрос.
1. Понимание пользовательских типов записей
Пользовательские типы записей позволяют создавать специализированные структуры данных, которые могут соответствовать уникальным потребностям вашего сайта. Например, если вы создаете сайт о автомобилях, вы можете создать CPT под названием «Автомобили», который будет включать записи о различных марках и моделях автомобилей.
2. Проблема с URL-адресами
Как вы отметили, когда вы создаете страницу с названием «Toyota», URL будет выглядеть как http://domain.com/toyota
. Однако, если вы создаёте запись в CPT «Автомобили» с тем же названием, URL будет таким: http://domain.com/автомобили/toyota
, что может создать путаницу и проблемы с навигацией.
3. Связывание пользовательских типов записей с страницами
Чтобы оптимально связать CPT со страницами, рассмотрите следующие способы:
A. Использование пользовательских полей и ссылок
Вы можете создавать ссылки на ваш CPT через дополнительные поля, которые можно добавить с помощью плагина Advanced Custom Fields (ACF) или использовать стандартные текстовые поля WordPress. Это даст вам возможность связывать записи CPT непосредственно с определённой страницей.
B. Динамическое отображение записей
Для эффективного отображения контента существует возможность использования Query Loop Block или плагина WP_Query. С помощью этих инструментов вы можете динамически извлекать записи вашего CPT и отображать их на страницах. Например, вы можете создать страницу «Toyota» и на ней с помощью блока запроса показывать записи из CPT «Автомобили». Это не только улучшает внешний вид, но и упрощает обновление контента.
// Пример пользовательского запроса для получения CPT "Автомобили"
$args = array(
'post_type' => 'cars',
'posts_per_page' => -1,
);
$cars_query = new WP_Query($args);
if ($cars_query->have_posts()) {
while ($cars_query->have_posts()) {
$cars_query->the_post();
the_title(); // Отображает заголовок записи CPT
}
wp_reset_postdata();
}
C. Ярлычные страницы (Custom Taxonomy)
Для улучшения структуры и навигации вы можете создать таксономию, которая будет связывать записи CPT с конкретными страницами. Таким образом, вы сможете использовать отношения для группировки записей и создания более осмысленной структуры URL.
4. Удобство поддержки
Важно отметить, что использование CPT должно быть оправданным. Если ваш проект требует создания разнообразного контента, лучше избегать ручных ссылок на записи и использовать динамические методы извлечения данных для обеспечения удобства поддержки и управления контентом. Это поможет избежать проблем с обновлением отдельных ссылок при изменении структуры сайта.
Заключение
В заключение, связь между пользовательскими типами записей и страницами возможна и может быть полезной, но важно следовать рекомендациям и лучшим практикам, чтобы сохранить простоту и удобство управления контентом. Используйте динамические методы отображения и структурируйте контент таким образом, чтобы он оставался доступным и понятным для пользователей.