Есть действующий сайт на вордпресс
На нем зарегистрирован тип поста "recipe" со слагом recepty
Для этого типа поста зарегистрированы таксономии "recipe_category", которые так же имеют слаг "recepty"
URL поста выглядит так: recepty/post-name
Чтобы страницы таксономий и постов не конфликтовали, использовался скрипт, который можно посмотреть в прикрепленном файле. Там также есть скрипт регистрации нового типа поста.
Необходимо сделать возможность добавлять таксономию в url некоторых постов по выбору
К примеру, есть пост "Блины"
Для него создан чекбокс на ACF - add_to_path
Если чекбокс пуст, то url выглядит так: recepty/блины
Но если чекбокс отмечен, то url становится: recepty/завтраки/блины
Весь интернет обрыт, или решения нет, или что-то было сделано не так на предыдущих этапах
В какую сторону копать?
function type_recipe() {
$recipe_args = array(
'labels' => array(
'name' => __('Рецепты'),
'singular_name' => __('Тимбилдинг'),
'all_items' => __('Все рецепты'),
'add_new_item' => __('Новый рецепт'),
'add_new' => __('Добавить рецепт'),
'new_item' => __('Новый рецепт'),
'edit_item' => __('Редактировать рецепт'),
'update_item' => __('Обновить рецепт'),
'view_item' => __('Просмотреть рецепт'),
'view_items' => __('Посмотреть все рецепты'),
'search_items' => __('Поиск рецептов'),
),
'rewrite' => array(
'slug' => 'recepty',
'with_front' => false
),
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'public' => true,
'has_archive' => true,
'show_in_menu' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-groups',
'capability_type' => 'page',
'taxonomies' => array( 'recipe_category'),
);
register_post_type('recipe', $recipe_args);
$labels = array(
'name' => _x('Категории рецептов', 'taxonomy general name'),
'singular_name' => _x('Категория рецепта', 'taxonomy singular name'),
'search_items' => __('Поиск категории'),
'all_items' => __('Все категории'),
'parent_item' => __('Родительская категория'),
'parent_item_colon' => __('Родительская категория:'),
'edit_item' => __('Изменить категорию'),
'update_item' => __('Обновить категорию'),
'add_new_item' => __('Добавить новую категорию'),
'new_item_name' => __('Имя новой категории'),
'menu_name' => __('Категории рецептов'),
);
$taxonomy_args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_tagcloud' => false,
'show_admin_column' => true,
'query_var' => true,
'meta_box_cb' => 'post_categories_meta_box',
'rewrite' => array(
'slug' => 'recepty',
'with_front' => false
),
);
register_taxonomy('recipe_category', array('recipe'), $taxonomy_args);
}
add_action('init', 'type_recipe');
function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
$rules = array();
$post_types = get_post_types( array( 'name' => 'recipe', 'public' => true, '_builtin' => false ), 'objects' );
$taxonomies = get_taxonomies( array( 'name' => 'recipe_category', 'public' => true, '_builtin' => false ), 'objects' );
foreach ( $post_types as $post_type ) {
$post_type_name = $post_type->name;
$post_type_slug = $post_type->rewrite['slug'];
foreach ( $taxonomies as $taxonomy ) {
if ( $taxonomy->object_type[0] == $post_type_name ) {
$terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
foreach ( $terms as $term ) {
$rules[$post_type_slug . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
$rules[$post_type_slug . '/' . $term->slug . '/page/?([0-9]{1,})/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug . '&paged=' . $wp_rewrite->preg_index( 1 );
}
}
}
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');