Для реализации возможности добавления таксономии в URL определенных постов типа "recipe" на сайте WordPress, вам потребуется внести изменения в работу переопределения ссылок (URL rewriting) и, возможно, изменить логику получения URL для постов. Вот основные шаги для выполнения этой задачи:
### Шаг 1: Регистрация пользовательской таксономии и типа записи
Вы, вероятно, уже зарегистрировали кастомный тип записи и таксономию, но необходимо убедиться, что у вас есть правильные настройки для переопределения ссылок.
```php
function type_recipe() {
$recipe_args = array(
'labels' => array(
'name' => __('Рецепты'),
'singular_name' => __('Рецепт'),
// Остальные метки...
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'recepty/%recipe_category%'), // Обратите внимание на специальные метки
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
);
register_post_type('recipe', $recipe_args);
// Регистрация таксономии
register_taxonomy('recipe_category', 'recipe', array(
'hierarchical' => true,
'labels' => array( /* ваши метки */ ),
'rewrite' => array('slug' => 'zavtraki'), // Можно настроить по своему
));
}
add_action('init', 'type_recipe');
```
### Шаг 2: Обновление перезаписи URL
Чтобы использовать таксономию в URL, необходимо использовать фильтр `post_type_link`, который изменяет ссылку на ваши посты в зависимости от состояния чекбокса ACF:
```php
function custom_recipe_link($post_link, $id) {
$post = get_post($id);
// Проверяем, что это нужный тип записи
if ($post->post_type === 'recipe') {
// Получаем значение чекбокса ACF
$add_to_path = get_field('add_to_path', $post->ID);
if ($add_to_path) {
// Получаем термины таксономии
$terms = get_the_terms($post->ID, 'recipe_category');
if ($terms && !is_wp_error($terms)) {
// Предполагаем, что берем первый термин для URL
$term = reset($terms);
return str_replace('%recipe_category%', $term->slug, $post_link);
}
} else {
// Используем стандартный слаг
return str_replace('%recipe_category%', '', $post_link);
}
}
return $post_link;
}
add_filter('post_type_link', 'custom_recipe_link', 10, 2);
```
### Шаг 3: Обновление правил перезаписи
После внесения изменений в структуру URL вам необходимо сбросить правила перезаписи, чтобы WordPress смог корректно обработать новые URL. Это можно сделать, перейдя в меню **Настройки -> Постоянные ссылки** в админке WordPress и просто нажав кнопку "Сохранить изменения".
### Шаг 4: Проверка отображения URL
Теперь, при запросе URL ваших рецептов, если чекбокс `add_to_path` установлен и у поста есть ассоциированная таксономия, URL будет содержать слаг таксономии.
### Примечания
- Убедитесь, что у ваших терминов таксономии есть соответствующие слоги и они правильно назначены к записям.
- Возможно, Вам нужно будет дополнительно протестировать и обработать исключения, например, для случаев, когда у поста нет связанной таксономии или есть несколько терминов.
Эти шаги должны помочь вам добавить таксономию в URL для вашего пользовательского типа записи. Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь их задавать!