Trong một vài trường hợp chúng ta muốn lấy dữ liệu theo ý mình, mà chúng không phải dạng post mà là một loại CUSTOM POST TYPE, chẳng hạn như Sản Phẩm, Video, Dịch Vụ…..
Thật dễ dàng giải quyết vấn đề trên cho dù bạn không biết chút nào về Query trong MySQL, trong wordpress đã hỗ trợ đối tượng WP_query, chúng ta chỉ cần khai báo trình tự các tham số thông qua biến $args là có thể lấy được dữ liệu theo ý muốn của chúng ta.
1. Lấy dữ liệu bằng WP_query
$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('post'), // post type cần query dữ liệu, có thể thay bằng bất kì post type nào bạn muốn 'post_status' => array('publish'), // Chỉ lấy dữ liệu đã xuất bản 'posts_per_page' => $posts_per_page, 'paged' => $paged, 'orderby' => 'date', // dữ liệu lấy ra được sắp xếp theo cột "date" 'order' => 'desc' // dữ liệu lấy ra được sắp xếp theo ngày mới nhất đến cũ nhất ); $the_query = new WP_query($args_filter);
Xem chi tiết đầy đủ các tham số $args_filter)
tại đây https://github.com/luetkemj/wp-query-ref
2. Hiển thị dữ liệu bằng vòng lặp LOOP
<?php if($the_query->have_posts()): ?> <section id="query-results"> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <ul <?php post_class('loop-cua-toi'); ?>> <li>ID bài viết: <?php the_ID(); ?></li> <li>Tiêu đề: <?php the_title(); ?></li> <li>Hình đại diện <?php the_post_thumbnail( 'thumbnail', array( 'class'=> 'them_class_cho_hinh class2 class3', 'alt'=> get_the_title() ) );?></li> <li>Nội dung: <?php the_content(); ?></li> <?php // echo wp_trim_words( get_the_content(), 50, '...' ); //=>lấy mô tả ngắn, 50 là số từ cần hiển thị ?> <li>Ngày đăng: <?php echo get_the_date('d/m/Y'); ?></li> <li>Tác giả: <a class="url fn n" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>"><?php echo get_the_author();?></a></li> <li>Xem thêm: <a href="<?php the_permalink(); ?>">Chi tiết »</a></li> </ul> <?php endwhile; wp_reset_postdata(); ?> </section> <?php endif; ?>
3. Hiển thị phân trang kết quả
<?php if( $the_query->max_num_pages > 1){ $GLOBALS['wp_query']->max_num_pages = $the_query->max_num_pages; ?> <div id="wpshare247-pagination"> <?php the_posts_pagination( array( 'prev_text' => '<span class="screen-reader-text">' . __( 'Previous page', 'wpshare247' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'wpshare247' ) . '</span>' , 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'wpshare247' ) . ' </span>', ) ); ?> </div> <?php } ?>
Đây là hướng dẫn cơ bản nhất để bạn dễ hiểu, đặc biệt cho các bạn mới làm quen với WordPress. Từ căn bản đó bạn có thể tùy biến nâng cao thêm rất dễ dàng.