Вопрос или проблема
Я пытаюсь обновить структуру URL для постов в рамках пользовательского типа постов. Я хотел бы, чтобы URL использовал слаг таксономии из таксономии “resource-topic”, а не ключ пользовательского типа постов.
В настоящее время в постоянной ссылке используется ключ пользовательского типа постов.
Например:
- вместо /resource-new/[название-блога]
- я хочу, чтобы это было /press-releases/[название-блога]
Мы используем плагин advanced custom fields > пользовательский тип постов и таксономии.
Пользовательский тип постов называется Resources (resource-new).
Я пытался изменить это, используя расширенные настройки ACF > URL, но это не работает.
Спасибо
У меня аналогичная проблема. Независимо от того, что я делаю, я не могу сделать так, чтобы пользовательские таксономии, которые я создаю в ACF, были частью постоянной ссылки пользовательского типа постов; она всегда остается /custom_post_type_slug/post_title.
Я нашел решение, которое сработало для меня. Пользовательское имя таксономии, которое я использовал, было “resource-topic”, а тип поста – “resource_new”. Эта функция переписывает URL и использует слаг пользовательской таксономии. Если вы замените эти значения своими именами и добавите функцию в файл функций, это должно сработать для вас.
Если у вас есть несколько пользовательских типов постов, которые нужно переписать, этот код нужно будет изменить.
function custom_rewrite_rules() {
$resource_topics = get_terms([
'taxonomy' => 'resource-topic',
'hide_empty' => false,
'fields' => 'slugs',
]);
if (!empty($resource_topics) && !is_wp_error($resource_topics)) {
foreach ($resource_topics as $topic_slug) {
add_rewrite_rule("^{$topic_slug}/([^/]+)/?$", 'index.php?resource-topic=" . $topic_slug . "&resource_new=$matches[1]', 'top');
}
}
}
add_action('init', 'custom_rewrite_rules');
Ответ или решение
Для настройки пользовательских постоянных ссылок в WordPress с использованием настраиваемых полей (ACF) и таксономий в собственных типах записей, необходима реализация функции, позволяющей переписывать URLs на основе выбранного слага из таксономии. В вашем случае требуется, чтобы структура URL для записей кастомного типа «Ресурсы» (resource-new) соответствовала формату /press-releases/[название-блога]
, где press-releases
— это слаг таксономии resource-topic
. Давайте подробно рассмотрим этот процесс.
Шаги для реализации
1. Регистрация пользовательского типа записи и таксономии
Убедитесь, что вы правильно зарегистрировали ваш пользовательский тип записи и таксономию с необходимыми параметрами. Например:
function create_custom_post_type() {
register_post_type('resource_new',
array(
'labels' => array(
'name' => __('Ресурсы'),
'singular_name' => __('Ресурс')
),
'public' => true,
'rewrite' => array('slug' => 'resource-new'),
'supports' => array('title', 'editor', 'custom-fields'),
)
);
register_taxonomy('resource-topic', 'resource_new', array(
'label' => __('Темы ресурсов'),
'rewrite' => array('slug' => 'resource-topic'),
'hierarchical' => true,
));
}
add_action('init', 'create_custom_post_type');
2. Переписывание правил URL
Для того чтобы использовать слаг таксономии в постоянных ссылках, необходимо добавить правило переписывания так:
function custom_rewrite_rules() {
$resource_topics = get_terms([
'taxonomy' => 'resource-topic',
'hide_empty' => false,
'fields' => 'slugs',
]);
if (!empty($resource_topics) && !is_wp_error($resource_topics)) {
foreach ($resource_topics as $topic_slug) {
add_rewrite_rule("^{$topic_slug}/([^/]+)/?$", 'index.php?resource-topic=' . $topic_slug . '&resource_new=$matches[1]', 'top');
}
}
}
add_action('init', 'custom_rewrite_rules');
Этот код создает правила переписывания, позволяя WordPress понимать, как обрабатывать запросы по новым URL.
3. Сброс правил пермалинков
После добавления нового правила переписывания нужно сбросить настройки постоянных ссылок. Это можно сделать, перейдя в админку WordPress в раздел Настройки → Постоянные ссылки и просто нажав кнопку «Сохранить изменения». Это обновит правила и применит ваши изменения.
4. Обновление шаблонов
Не забудьте удостовериться, что ваши шаблоны корректно обрабатывают запросы. Если необходимо, можете использовать функции get_post_type()
, get_term()
и другие, чтобы извлекать нужные данные на страницах с новыми URL.
Заключение
Эти шаги помогут вам настроить пользовательские постоянные ссылки для пользовательских типов записей с учетом таксономий. Использование ACF в сочетании с этими изменениями позволит более гибко управлять структурой URL вашей страницы. Также не забывайте о регулярной проверке на наличие конфликтов и ошибок после внесения изменений, чтобы обеспечить стабильную работу вашего сайта.