У меня есть сайт WooCommerce, который я настроил, и я хотел бы, чтобы продукты имели свои ссылки в виде /inventory/category/sub-category/product-name.
У меня есть пользовательская страница /Инвентаризация и база продуктов настроены как / product, но я хочу обойти это.
Я установил правило перезаписи Wordpress следующим образом:
// rewrite rules for posts
function wpse_product_rewrite_rules( $wp_rewrite ) {
global $wp_rewrite;
$base = "inventory";
// get all product posts
$query = new WP_Query(array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1
));
// generate the rewrite rules
$rules = array();
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
unset($terms);
$getslugid = wp_get_post_terms( $post_id, 'product_cat' );
foreach( $getslugid as $thisslug ) {
$terms .= $thisslug->slug . '/';
}
$post_slug = get_post_field( 'post_name', get_post($product_id) );
$rewrite_url = $terms.$post_slug;
$rules[$base . '/' . $rewrite_url . '/?$'] = 'index.php?p=' . $post_id;
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
return $wp_rewrite->rules;
wp_reset_query();
}
add_action('generate_rewrite_rules', 'wpse_product_rewrite_rules', 'top');
// end rewrite rules for posts
Перенаправление работаетПервоначально (это ссылка на / инвентарь / категория / подкатегория / продукт не 404), но затем я думаю, что другой перенаправить отправляет меня на /product/product-name.
Я предполагаю, что Wordpressтоварная база почему-то не соответствует моему обычному перенаправлению.
Есть ли способ обойти это?