#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 Я обновил свой ответ. пожалуйста, проверьте и дайте мне знать, если вы все еще сталкиваетесь с какой-либо проблемой.