Владельческий контент (owned content) — это уникальные материалы, которые создаются и полностью принадлежат вашему сайту или бренду. В экосистеме WordPress это могут быть специальные типы записей, страницы или кастомные посты, которые вы контролируете целиком. В этой статье мы подробно разберём, как создать и организовать владельческий контент в WordPress с помощью кастомных типов записей и метаданных, а также покажем примеры кода и полезные плагины.
Что такое владельческий контент и зачем он нужен в WordPress
Владельческий контент — это контент, над которым у вас есть полный контроль: вы управляете его структурой, отображением и доступом к нему. В отличие от пользовательского контента или импортированных материалов, владельческий контент позволяет создавать уникальные разделы сайта с особыми возможностями. Например, собственные каталоги, отзывы, кейсы, портфолио или обучающие материалы.
Создание владельческого контента помогает улучшить SEO, повысить вовлечённость пользователей и выделиться среди конкурентов. В WordPress для этого отлично подходят кастомные типы записей (Custom Post Types) и таксономии.
Создание кастомного типа записи для владельческого контента
Для начала создадим кастомный тип записи, который будет хранить наш владельческий контент. Допустим, это будет тип записи «Кейсы» (cases). Добавим следующий код в файл functions.php вашей темы или в отдельный плагин.
function wpexamples_register_cases_cpt() {
$labels = array(
'name' => 'Кейсы',
'singular_name' => 'Кейс',
'add_new' => 'Добавить кейс',
'add_new_item' => 'Добавить новый кейс',
'edit_item' => 'Редактировать кейс',
'new_item' => 'Новый кейс',
'view_item' => 'Просмотреть кейс',
'search_items' => 'Поиск кейсов',
'not_found' => 'Кейсы не найдены',
'not_found_in_trash' => 'В корзине кейсы не найдены',
'menu_name' => 'Кейсы'
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'cases'),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt'),
'show_in_rest' => true
);
register_post_type('cases', $args);
}
add_action('init', 'wpexamples_register_cases_cpt');
Этот код создаст в админке WordPress новый раздел «Кейсы», где можно добавлять уникальные записи, которые будут полностью под вашим контролем.
Добавление кастомных полей для расширения контента
Чтобы владельческий контент был более информативным, стоит добавить кастомные поля. Например, можно добавить поле «Заказчик» и «Дата реализации». Для этого удобно использовать плагин Advanced Custom Fields (ACF).
Создайте группу полей и добавьте нужные поля, затем выведите их в шаблоне следующим образом:
function wpexamples_show_case_meta() {
if (get_post_type() === 'cases') {
$client = get_field('client');
$completion_date = get_field('completion_date');
if ($client) {
echo '<p><strong>Заказчик:</strong> ' . esc_html($client) . '</p>';
}
if ($completion_date) {
echo '<p><strong>Дата реализации:</strong> ' . esc_html($completion_date) . '</p>';
}
}
}
add_action('the_content', 'wpexamples_show_case_meta');
Этот код добавит под содержимым кейса информацию из кастомных полей.
Фильтрация и вывод владельческого контента на фронтенде
Для удобства пользователей можно создать шаблон для архива кейсов и добавить фильтрацию по метаданным. Например, фильтрация по дате реализации или заказчику.
Пример простого WP_Query с фильтрацией по метаполю
$args = array(
'post_type' => 'cases',
'meta_query' => array(
array(
'key' => 'client',
'value' => 'Компания А',
'compare' => '='
)
)
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title('<h2>', '</h2>');
the_excerpt();
}
wp_reset_postdata();
} else {
echo '<p>Кейсы не найдены</p>';
}
Такой запрос выведет только кейсы, где заказчик — «Компания А».
Использование плагинов для расширения возможностей владельческого контента
Для управления и улучшения владельческого контента можно использовать следующие плагины:
- ACF Pro — для создания сложных полей и групп метаданных.
- WPGraphQL — для построения гибких API-запросов к владельческому контенту.
- Toolset Types — альтернатива для создания кастомных типов записей и таксономий без кода.
- SearchWP — улучшает поиск по кастомным полям и типам записей.
Если вы используете тему Reboot или Root, они отлично интегрируются с кастомными типами записей и помогут вывести контент с красивым дизайном.
Советы по безопасности и производительности владельческого контента
При работе с кастомными типами записей и метаданными важно учитывать безопасность и нагрузку на сайт:
- Используйте
sanitize_text_field()и другие функции очистки для входящих данных. - Добавляйте nonce-поля в формы для защиты от CSRF-атак.
- Кешируйте сложные запросы с помощью Transients API или плагинов кеширования.
- Оптимизируйте запросы WP_Query, чтобы избежать излишней нагрузки.
Например, при сохранении метаданных используйте хук save_post:
function wpexamples_save_cases_meta($post_id) {
if (!isset($_POST['wpexamples_cases_nonce']) || !wp_verify_nonce($_POST['wpexamples_cases_nonce'], 'wpexamples_save_cases')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['client'])) {
update_post_meta($post_id, 'client', sanitize_text_field($_POST['client']));
}
if (isset($_POST['completion_date'])) {
update_post_meta($post_id, 'completion_date', sanitize_text_field($_POST['completion_date']));
}
}
add_action('save_post_cases', 'wpexamples_save_cases_meta');