Požadovaná permalinková struktura (pro produkty existují pouze tyto struktury)
Product 1: /shop/category/subcategory/product1/
Product 2: /shop/category/product2/
Nastavení zobrazení produktu Woocommerce
View for shopbase: Show categories
View for categories: Show products
Produkty
Products are only checked for one category OR subcategory
Nastavení Permalink
Normal settings: /%category%/%postname%/
Base for categories: shop
For products: /shop/%product_cat%/
Archivy
Since there are over 100 subcategories, I want to use an archive to list all
the products.
S níže uvedenými pokusy jsem byl schopen vytvořit pracovní Product-page
, ale zároveň tak učinil i 404:ing
stránku podkategorie. Nemohu si vzpomenout, která možnost dává výsledek.
%category%/%product_cat%
, %category%/%product_cat%/%postname%
, %product_cat%/%product_cat%
, shop/%product_cat%
, shop/%product_cat%/%postname%
a všech výše uvedených kombinací s koncem jako /.
.404
.Co dělám špatně nebo jakou část mohu převést na tuto práci? Tak velký pro všechny rady nebo vede nebo odpovědi. Děkujeme, že jste si to přečetli!
Byl jsem schopen tento problém vyřešit následujícím kódem, který generuje rewrite_rules pro každou podkategorii, která je upřednostňována při porovnávání, protože je konkrétnější:
function wpse_291143_generate_taxonomy_rewrite_rules( $wp_rewrite ) {
global $wp_rewrite;
$base = "shop";
$rules = array();
$terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => false ));
foreach($terms as $term) {
$term_children = get_terms( array(
'taxonomy' => 'product_cat',
'parent' => intval($term->term_id),
'hide_empty' => false
)
);
if($term_children) {
foreach ( $term_children as $term_child ) {
$rules[$base . '/' . $term->slug . '/' . $term_child->slug . '/?$'] = 'index.php?product_cat=' . $term_child->slug;
}
}
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
return $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'wpse_291143_generate_taxonomy_rewrite_rules');