Как получить старые продукты из текущего идентификатора продукта в Woo commerce?

#wordpress #woocommerce

#wordpress #woocommerce

Вопрос:

Я хочу получить более старые продукты в Woocommerce WordPress из текущего идентификатора продукта, но я не вижу никаких способов добавить условия в массив ( как показано ниже). Обычно, если я использую запрос Mysql, я буду выбирать идентификаторы, у которых есть идентификатор

Может ли кто-нибудь помочь мне отредактировать этот код, чтобы получить более старые идентификаторы из текущего идентификатора продукта?

 lt;?php global $product; $product_id=$product-gt;get_id();  $args = array(  'post_type' =gt; 'product',  'posts_per_page' =gt; 10,  'category' =gt; 15,  'orderby' =gt; 'date',   'order' =gt; 'DESC' );  $loop = new WP_Query( $args ); while ( $loop-gt;have_posts() ) : $loop-gt;the_post();  wc_get_template_part( 'content', 'older' );  endwhile; ?gt;  

Ответ №1:

Вы можете писать пользовательские запросы, чтобы получить более старые продукты текущего продукта, опубликованные на сегодняшний день. Попробуйте выполнить приведенный ниже код.

 function get_previous_products( $product_id ){  global $wpdb;  $post_date = get_the_date( 'Y-m-d H:i:s', $product_id );  $get_all_previous_products = $wpdb-gt;prepare( "SELECT p.ID FROM {$wpdb-gt;prefix}posts AS p WHERE p.post_date gt; '".$post_date."' AND p.post_type = 'product' ORDER BY p.post_date ASC" );  $get_all_previous_products = $wpdb-gt;get_col( $get_all_previous_products );  return $get_all_previous_products; }  get_previous_products( $product_id );  function get_next_products( $product_id ){  global $wpdb;  $post_date = get_the_date( 'Y-m-d H:i:s', $product_id );  $get_all_next_products = $wpdb-gt;prepare( "SELECT p.ID FROM {$wpdb-gt;prefix}posts AS p WHERE p.post_date lt; '".$post_date."' AND p.post_type = 'product' ORDER BY p.post_date ASC" );  $get_all_next_products = $wpdb-gt;get_col( $get_all_next_products );  return $get_all_next_products; }  get_next_products( $product_id );  

ИЛИ вы также можете использовать date_query параметр WP_Query .

 function get_previous_products( $product_id ){  $get_all_previous_products = new WP_Query(array(  'post_type' =gt; 'product',  'date_query' =gt; array(  array(  'before' =gt; get_the_date( 'Y-m-d H:i:s', $product_id ),  ),  ),  'fields' =gt; 'ids'  ));   return $get_all_previous_products-gt;posts; }  get_previous_products( $product_id );  function get_next_products( $product_id ){  $get_all_next_products = new WP_Query(array(  'post_type' =gt; 'product',  'date_query' =gt; array(  array(  'after' =gt; get_the_date( 'Y-m-d H:i:s', $product_id ),  ),  ),  'fields' =gt; 'ids'  ));   return $get_all_next_products-gt;posts; }  get_next_products( $product_id );  

Комментарии:

1. похоже, вы не поняли мой вопрос, я имею в виду, что если у меня есть 9 продуктов, подобных этому: pro 1 pro 2 pro 3 pro 4 pro 5 pro 6 pro 7 pro 8 pro 9, то когда я нажму на продукт 6 ( pro 6), он покажет продукты в более старом блоке продуктов, например: pro 1 pro 2 pro 3 pro 4 pro 5 и покажет новый блок продуктов, например: pro 7 pro 8 pro 9

2. Привет, Bhautik, Спасибо за вашу поддержку, Ваши коды работали половину «после» = gt; get_the_date («Y-m-d H:i:s», $product_id), не работали, он показывал последние продукты.

3. @iTommy Я обновил свой ответ. пожалуйста, проверьте и дайте мне знать, если вы все еще сталкиваетесь с какой-либо проблемой.