望ましいパーマリンク構造(製品にはこれらの構造だけが存在します)
Product 1: /shop/category/subcategory/product1/
Product 2: /shop/category/product2/
Woocommerce商品ビュー設定
View for shopbase: Show categories
View for categories: Show products
商品
Products are only checked for one category OR subcategory
パーマリンク設定
Normal settings: /%category%/%postname%/
Base for categories: shop
For products: /shop/%product_cat%/
アーカイブ
Since there are over 100 subcategories, I want to use an archive to list all
the products.
以下の試みで私は実用的なProduct-page
を作り出すことができました、しかしそうしている間、404:ing
もサブカテゴリページです。どのオプションがどのような結果をもたらすのか思い出せません。
%category%/%product_cat%
、%category%/%product_cat%/%postname%
、%product_cat%/%product_cat%
、shop/%product_cat%
、shop/%product_cat%/%postname%
、および末尾が/.
であるすべての組み合わせを含む、製品カテゴリベースのさまざまなパーマリンク設定を試してみました404
を返します。私は何をしているのでしょうか、それともこの部分を機能させるためにどの部分を再配線すればよいのでしょうか。どんなヒントや見込みまたは回答にもとても素晴らしいです。これを読んでくれてありがとう!
各サブカテゴリに対してrewrite_rulesを生成する次のコードを使用してこれを解決することができました。これは、より具体的であるため、マッチング中に推奨されます。
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');