Я использую этот плагин под названием «Custom Post Type Permalinks», который помогает мне получить тип сообщения, чтобы выстроить его так называемую таксономию, которую я создал, product_category
, но я не могу получить правильные ссылки таксономии product_category с /shop/
перед ними, которые также работают с дочерними категориями.WordPress дочерние категории, не работающие в URL-адресах, как они должны
В принципе, пользовательский тип сообщения - product
и имеет структуру url, например:/shop/category/{Category Parent}/{Category Child}/{Product Name}, и выглядит так, как показано в functions.php при регистрации тип таможенного поста:
register_post_type('product', array(
'description' => __('Products'),
'label' => __('products'),
'labels' => array(
'name' => _x('Product', 'Post Type General Name'),
'singular_name' => _x('Product', 'Post Type Singular Name'),
'menu_name' => __('Products'),
'parent_item_colon' => __('Parent Product'),
'all_items' => __('All Products'),
'view_item' => __('View Product'),
'add_new_item' => __('Add New Product'),
'add_new' => __('Add New'),
'edit_item' => __('Edit Product'),
'update_item' => __('Update Product'),
'search_items' => __('Search Product'),
'not_found' => __('Not Found'),
'not_found_in_trash' => __('Not Found in Trash')
),
'taxonomies' => array('product_category'),
'supports' => array('title', 'editor', 'thumbnail'),
'rewrite' => array('slug' => 'shop', 'with_front' => false),
"cptp_permalink_structure" => "/category/%product_category%/%postname%/",
'hierarchical' => false,
'public' => true, // Needs to be set to true to be able to show the endpoints!
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => false,
'show_in_admin_bar' => true,
'query_var' => true,
'menu_position' => 10,
'menu_icon' => 'dashicons-cart',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page'
)
);
cptp_permalink_structure
ключ позволяет мне назначить %product_category%
так, что категории (родитель и дети) собирается в URL и название продукта является последней частью пути. Мне нужно было дать ему пулю, поэтому я выбираю shop
, так что у него есть что-то, так как слизняк и магазин должны быть в любом случае. Все URL-адреса продукта работают отлично. И выглядеть следующим образом: /shop/category/{Category Parent}/{Category Child}/{Product Name}/
Теперь для пользовательской таксономии, я добавил в функции, которая получает инициированную init
действия WordPress и выглядит следующим образом:
// I do not want to use 'category' since I don't want post categories mixed with product categories.
register_taxonomy('product_category', 'product', array(
'label' => __('Category'),
'rewrite' => array('slug' => 'shop/category', 'hierarchical' => true, 'with_front' => false),
'labels' => array(
'name' => __('Categories'),
'singular_name' => __('Category'),
'all_items' => __('All Categories'),
'edit_item' => __('Edit Category'),
'view_item' => __('View Category'),
'update_item' => __('Update Category'),
'add_new_item' => __('Add New Category'),
'new_item_name' => __('New Category Name'),
'parent_item' => __('Parent Category'),
'parent_item_colon' => __('Parent Category:'),
'search_items' => __('Search Categories'),
'popular_items' => __('Popular Categories'),
'separate_items_with_commas' => __('Separate Categories with commas'),
'add_or_remove_items' => __('Add or Remove Categories'),
'choose_from_most_used' => __('Choose from the most used Categories'),
'not_found' => __('No Categories found')
),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'hierarchical' => true,
'exclude_from_search' => false,
'description' => 'Categories associated with Products.',
'query_var' => true,
'capabilities' => array(
'manage_terms' => 'manage_options', //by default only admin
'edit_terms' => 'manage_options',
'delete_terms' => 'manage_options',
'assign_terms' => 'edit_posts' // means administrator', 'editor', 'author', 'contributor'
)
));
Я попытался с помощью shop/category
для переписывайте слизню таксономии (как вы можете видеть выше), которая была бы идеальной, если бы только страницы архива дочерней категории не производили 404 страницы. Итак, пока: /shop/category/{Category Parent}/
и /shop/category/{Category Child}/
работ, /shop/category/{Category Parent}/{Category Child}/
возвращает страницу ошибки 404. Итак, я в недоумении о том, как получить дочерние категории показывает, как в /shop/category/{Category Parent}/{Category Child}/
Примечание: Если изменить только category
как переписывания слизняк, детские Категории выстраиваются правильно вот так: /category/{Category Parent}/{Category Child}
, но проблема в том, , Мне нужно /shop/
до /category/
здесь.
Как это сделать? Пытаясь понять это в течение нескольких дней, с разными путями, попробовал также добавить правило перезаписи (при смене переписывающего пули только на category
).
add_rewrite_rule('shop/category/?([^/]*)', 'index.php?product_category=$matches[1]', 'top');
Но правило перезаписи также не работает для категорий детей. И возвращает архив родительской категории, а не дочерний.
Как я проверил это в файле archive.php со следующим кодом:
$tax_slug = get_query_var('product_category');
echo '<pre>', var_dump($tax_slug), '</pre>';
И возвращает родительскую категорию слизняка вместо ребенка на ребенка категорий.
Любая помощь приветствуется здесь, я вытаскиваю свои волосы ... лысый!
EDIT - Возможный метод, который может работать
Так, в принципе, это может быть столь же просто, как создать еще один BASE
для этой таксономии в разделе Permalinks админа. Но как создать базу для пользовательской таксономии?Существует уже BASE для категорий и тегов, но если это может сработать, мне понадобится BASE для product_category
, а slug для таксономии product_category
может быть только category
, а BASE добавит shop
перед этим для всех ссылок. Но как создать базу для пользовательской таксономии?
Я не знаю, что вы делаете, но страницы архива дочерних категорий для меня не работают. Вместо этого они возвращают 404 страницы. Я выложу несколько скриншотов ... –
@SolomonClosson вы пробовали мой код в functions.php? Я попробовал на своем локальном компьютере, это сработало для меня как от вас, так и от вас. Поэтому я думаю, что этот выше код поможет вам, но убедитесь, что вы вставляете его в functions.php в папку темы. –
Да, я поместил ваш код в functions.php в путь темы, сохранил permalinks, он не работает. –