CHƯƠNG TRÌNH GIẢM 50% GIÁ TẤT CẢ CÁC GÓI HOSTING WORDPRESS => Link giảm 50%
Trong quá trình thiết kế web bằng wordpress mặc dù plugin WooCommerce đã hỗ trợ chúng ta rất nhiều Shortcode hữu ích. Tuy nhiên trong một số trường hợp bạn cần phải tự truy vấn sản phẩm cho riêng mình. Sau đây là một số câu truy vấn sản phẩm cần thiết cho bạn. Chỉ cần copy và nhúng chúng vào file functions.php trong theme là có thể sử dụng nhé.
1. Truy vấn sản phẩm mới nhất
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged ); $the_query = new WP_query($args_filter);
2. Truy vấn sản phẩm của một danh mục chỉ định
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', // Không thay đổi 'field' => 'slug', 'terms' => 'iphone' // slug của danh mục sản phẩm cần truy vấn, vd: https://wpshare247.com/danh-muc-san-pham/iphone /* có thể dùng ID của danh mục như sau: 'field' => 'term_id', 'terms' => 50 */ ), ), ); $the_query = new WP_query($args_filter);
Chú ý: Khi truy vấn sản phẩm của 1 danh mục nào đó, ví dụ ở đây là danh mục iphone, nếu dữ liệu chúng ta có cấu trúc danh mục quan hệ cha con như sau:
- Điện thoại
-
- iphone
-
- iphone 2020
- iphone 2019
- iphone 2018
- nokia
- samsung
- Máy tính bảng
- Phụ kiện
Mặc định khi truy vấn sản phẩm cha là iphone, kết quả trả về sẽ bao gồm cả các sản phẩm thuộc danh mục con của iphone là iphone 2020, iphone 2019, iphone 2018 là bởi phần tử 'include_children' => true
, nếu không muốn kết quả bao gồm các danh mục con, bạn cần khai báo thêm 'include_children' => true
, xem ví dụ 5
3. Truy vấn sản phẩm của nhiều danh mục chỉ định
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', // Không thay đổi 'field' => 'slug', 'terms' => array( 'iphone', 'nokia' ), // slug của các danh mục sản phẩm cần truy vấn, vd: https://wpshare247.com/danh-muc-san-pham/iphone /* có thể dùng ID của danh mục như sau: 'field' => 'term_id', 'terms' => 50 */ 'operator' => 'IN' // 'IN', 'NOT IN', 'AND', 'EXISTS' và 'NOT EXISTS'. Mặc định là ‘IN’. ), ), ); $the_query = new WP_query($args_filter);
4. Truy vấn sản phẩm không thuộc các danh mục chỉ định
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', // Không thay đổi 'field' => 'slug', 'terms' => array( 'iphone', 'nokia' ), // slug của các danh mục sản phẩm chỉ định, vd: https://wpshare247.com/danh-muc-san-pham/iphone /* có thể dùng ID của danh mục như sau: 'field' => 'term_id', 'terms' => 50 */ 'operator' => 'NOT IN' // ‘IN’, ‘NOT IN’, ‘AND’, ‘EXISTS’ và ‘NOT EXISTS’. Mặc định là ‘IN’. ), ), ); $the_query = new WP_query($args_filter);
5. Chỉ truy vấn sản phẩm của danh mục chỉ định, không lấy sản phẩm của danh mục con
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', // Không thay đổi 'field' => 'slug', 'terms' => array( 'iphone', 'nokia' ), // slug của danh mục sản phẩm cần truy vấn, vd: https://wpshare247.com/danh-muc-san-pham/iphone /* có thể dùng ID của danh mục như sau: 'field' => 'term_id', 'terms' => 50 */ 'operator' => 'IN', // ‘IN’, ‘NOT IN’, ‘AND’, ‘EXISTS’ và ‘NOT EXISTS’. Mặc định là ‘IN’. 'include_children' => false // Mặc định là true ), ), ); $the_query = new WP_query($args_filter);
6. Truy vấn sản phẩm nổi bật
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', 'operator' => 'IN', ) ), ); $the_query = new WP_query($args_filter);
7. Truy vấn sản phẩm nổi bật của một hoặc nhiều danh mục chỉ định
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'product_cat', // Không thay đổi 'field' => 'slug', 'terms' => array( 'iphone', 'nokia' ), // slug của các danh mục sản phẩm chỉ định, vd: https://wpshare247.com/danh-muc-san-pham/iphone /* có thể dùng ID của danh mục như sau: 'field' => 'term_id', 'terms' => 50 */ 'operator' => 'IN' // ‘IN’, ‘NOT IN’, ‘AND’, ‘EXISTS’ và ‘NOT EXISTS’. Mặc định là ‘IN’. ), array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', 'operator' => 'IN', ) ), );
8. Truy vấn sản phẩm bán chạy Best Seller
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'meta_key' => 'total_sales', 'orderby' => 'meta_value_num', 'posts_per_page' => $posts_per_page, 'paged' => $paged ); $the_query = new WP_query($args_filter);
9. Truy vấn sản phẩm giảm giá – khuyến mại (on sale)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // trang dữ hiện tại cần lấy dữ liệu $posts_per_page = 12; // chia mỗi trang có bao nhiêu kết quả $args_filter = array( 'post_type' => array('product'), // post_type trong WooCommerce là product 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản, {pending, draft, auto-draft, future, private, inherit, trash, any} 'order' => 'desc', // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất, 'asc' sẽ sắp xếp ngược lại 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'meta_query' => array( 'relation' => 'OR', array( // Sản phẩm đơn giản 'key' => '_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'numeric' ), array( // Sản phẩm biến thể 'key' => '_min_variation_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'numeric' ) ) );
Hiển thị sản phẩm từ truy vấn trên
<?php if($the_query->have_posts()): ?> <section id="query-results"> <?php while ($the_query->have_posts()) : $the_query->the_post(); wc_get_template_part( 'content', 'product' ); /* Bạn có thể lấy đối tượng sản phẩm để sử dụng như sau: $product_id = get_the_ID(); $product = wc_get_product($product_id); echo $product->get_title(); echo $product->get_price(); */ endwhile; wp_reset_postdata(); ?> </section> <?php endif; ?>
Hi vọng các câu truy vấn trên sẽ giúp ích được bạn trong quá trình làm web bằng wordpress kết hợp với plugin WooCommerce.
CHƯƠNG TRÌNH GIẢM 50% GIÁ TẤT CẢ CÁC GÓI HOSTING WORDPRESS => Link giảm 50%