Возможно, ваша проблема связана с аргументами WP_Query .Я обнаружил следующие проблемы:
- 'pagination' не является допустимым аргументом,
- аргумент таксономии ( 'product_cat' ) учитывая, что ключ устарел, вместо него следует использовать 'tax_query' .
- значение переменной $ page не определено (по крайней мере, не в вашем примере скрипта), и кажется, что определение как 'page' , так и Аргументы 'paged' могут вызвать конфликты в вашем запросе.
Попробуйте использовать следующее:
global $post;
$args = array(
'posts_per_page' => 6,
'post_type' => 'product',
'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $post->post_name // !
),
),
);
$loop = new WP_Query( $args );
// echo $loop->request; - I guess this is a test left-over
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
/**
* No need to call the $product global within the loop,
* use the $loop->post or even better call the product object
* using the WooCommerce wc_get_product() function as displayed
* below
*/
// global $product;
$product = wc_get_product( $loop->post );
?>
////////////////// product info//////////////
<?php endwhile;
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $loop->max_num_pages
) );
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
Последнее, но не менее важное значение термина таксономии, которое вы даете для product_cat (прокомментировано как категория отца ) является текущим постом слизня.Я понимаю, почему вы можете захотеть сделать это, но при некоторых обстоятельствах это также может быть причиной того, что вы получаете эти 404-е.Поэтому, если приведенный выше сценарий не решит вашу проблему, я бы посоветовал вам тоже разобраться в этом.