Intereting Posts
Не меняйте активную кнопку, пока я перечислю категорию? Jetpack Running Locally wp ajax return 0 Преобразование простого запроса SQL-запроса в WordPress Как назначить постоянную ссылку на функцию Были ли языковые переключатели удалены из WP недавно? Один для гуру: обновление до 3.x испортило только имена файлов с акцентированными символами В моем заголовке есть область виджета. Как я могу отображать другой виджет в зависимости от того, какая группа показана? Раздражающее уведомление при попытке создать новую страницу Почему wp перенаправляет меня на wp-login.php, когда я перехожу к переписанному URL-адресу wp-admin? Добавление строк темы в файл .PO Пользовательский тип сообщения, добавленный в меню, не будет отображаться во внешнем интерфейсе Отображать изображение из внешней rss-ленты на wordpress без плагинов Отсутствует управление пользователями после перехода на новый хост Как масштабировать изображение с одинаковой шириной и высотой без искажений?

Следующий и предыдущий продукт только из текущей подкатегории

У меня есть следующая проблема: я смог реализовать код, чтобы иметь возможность перемещаться между продуктами из одного продукта, но мне нужно сделать эту навигацию только соответствующей подкатегорией.

пример

Навигация для / велосипеды / городские

Навигация к / велосипеды / мессенджер

И Т.Д…

Теперь он смешивает все продукты, сгруппированные в родительскую категорию «велосипеды».

function ShowLinkToProduct($post_id, $categories_as_array, $label) { // get post according post id $query_args = array( 'post__in' => array($post_id), 'posts_per_page' => 1, 'post_status' => 'publish', 'post_type' => 'product', 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $categories_as_array ))); $r_single = new WP_Query($query_args); if ($r_single->have_posts()) { $r_single->the_post(); global $product; ?> <ul class="product_list_widget"> <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"> <?php if (has_post_thumbnail()) the_post_thumbnail('shop_thumbnail'); else echo '<img src="'. woocommerce_placeholder_img_src() .'" alt="Placeholder" width="'.$woocommerce->get_image_size('shop_thumbnail_image_width').'" height="'.$woocommerce->get_image_size('shop_thumbnail_image_height').'" />'; ?> <?php echo $label; ?> <?php if ( get_the_title() ) the_title(); else the_ID(); ?> </a> <?php echo $product->get_price_html(); ?></li> </ul> <?php wp_reset_query(); } } if ( is_singular('product') ) { global $post; // get categories $terms = wp_get_post_terms( $post->ID, 'product_cat' ); foreach ( $terms as $term ) $cats_array[] = $term->term_id; // get all posts in current categories $query_args = array('posts_per_page' => -1, 'post_status' => 'publish', 'post_type' => 'product', 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $cats_array ))); $r = new WP_Query($query_args); // show next and prev only if we have 3 or more if ($r->post_count > 2) { $prev_product_id = -1; $next_product_id = -1; $found_product = false; $i = 0; $current_product_index = $i; $current_product_id = get_the_ID(); if ($r->have_posts()) { while ($r->have_posts()) { $r->the_post(); $current_id = get_the_ID(); if ($current_id == $current_product_id) { $found_product = true; $current_product_index = $i; } $is_first = ($current_product_index == $first_product_index); if ($is_first) { $prev_product_id = get_the_ID(); // if product is first then 'prev' = last product } else { if (!$found_product && $current_id != $current_product_id) { $prev_product_id = get_the_ID(); } } if ($i == 0) { // if product is last then 'next' = first product $next_product_id = get_the_ID(); } if ($found_product && $i == $current_product_index + 1) { $next_product_id = get_the_ID(); } $i++; } if ($prev_product_id != -1) { ShowLinkToProduct($prev_product_id, $cats_array, "next: "); } if ($next_product_id != -1) { ShowLinkToProduct($next_product_id, $cats_array, "prev: "); } } wp_reset_query(); } }