1BANNER 123
5/5 - (54 bình chọn)

Hello mọi người, đây là bài viết đầu tiên trên blog của mình. Suy nghĩ mãi chả biết viết cái gì cho nó hay hay, lượt FB thấy có thanh niên hỏi một vấn đề mà chưa có ai trả lời, nên mình quyết định lấy vấn đề đó làm bài post đầu tiên của cuộc đời mình.

Hôm này mình sẽ chia sẻ một đoạn code hiển thị các bài post trong category và sắp xếp theo từng category.

Cách lấy category

Đầu tiên, để có thể tạo được danh sách các bài post thuộc category, các bạn phải show được các category

$cats = get_categories();
   foreach ($cats as $cat) {
   $cat_id= $cat->term_id;
query_posts("cat=$cat_id&posts_per_page=100");

Đoạn code này sẽ giúp bạn lấy toàn bộ các category có trong type post của wordpress.

Phần còn lại là hiển thị các bài viết thuộc category. Mình sẽ sử dụng WP_Query để gọi các bài viết ra.

Và code sẽ có dạng

<?php $pttuan = new WP_Query(array(
        'post_type'=>'post',
        'post_status'=>'publish',
        'cat' => $cat_id,
        'orderby' => 'ID',
        'order' => 'DESC',
        'posts_per_page'=> 4));?>
<?php $i=0; while ($pttuan->have_posts()) : $pttuan->the_post(); ?>
    <?php if ($i==1):?>
        <div><?php echo get_the_post_thumbnail( $post_id, 'thumbnail', array( 'class' =>'thumnail') ); ?></div>
        <div><a href="<?php the_permalink();?>"><?php the_title(); ?></a></div>
        <div><?php the_excerpt() ;?></div>
        <div><a href="<?php the_permalink();?>">Xem thêm</a></div>
        <div><p>Tin liên quan</p></div>
    <?php endif;?>
    <?php if ($i>1):?>
        <div><a href="<?php the_permalink();?>"><?php the_title(); ?></a></div>
    <?php endif;?>
    <?php $i++; endwhile;wp_reset_query();}?>

Các bạn chú ý đến đoạn ‘cat’ mình truyền biến $cat_id mà mình đã gọi ở phía trên, ở đây bạn có thể custom lại bằng một category nhất định bằng cách điền id hoặc slug của category mà bạn muốn lấy vào.

Trong đoạn code trên thì mình đã đặt biến đếm cho vòng lắp, đối với các bài post có số thứ tự là 1 sẽ hiển thị ảnh thumbnail, tiêu đề và phần mô tả ngắn.

Còn đối với các post còn lại sẽ chỉ hiển thị phần tiêu đề. Các bạn có thể custom đoạn code này lại theo ý muốn của mình.

Các bạn đặt class và css lại một chút là có thể sử dụng một cách ngon lành rồi nhé.

Đối với những bạn không chuyên về code thì mình có sẵn một đoạn tạo shortcode, các bạn copy và dán vào function.php theme của mình là sẽ sử dụng được ngay nhé.

function displayblog(){
    ob_start();
            $cats = get_categories();
                foreach ($cats as $cat) {
                    $cat_id= $cat->term_id;
                    query_posts("cat=$cat_id&posts_per_page=100");
                   $pttuan = new WP_Query(array(
                        'post_type'=>'post',
                        'post_status'=>'publish',
                        'cat' => $cat_id,
                        'orderby' => 'ID',
                        'order' => 'DESC',
                        'posts_per_page'=> 4));?>
                <?php $i=0; while ($pttuan->have_posts()) : $pttuan->the_post(); ?>
                    <?php if ($i==1):?>
                        <div><?php echo get_the_post_thumbnail( $post_id, 'thumbnail', array( 'class' =>'thumnail') ); ?></div>
                        <div><a href="<?php the_permalink();?>"><?php the_title(); ?></a></div>
                        <div><?php the_excerpt() ;?></div>
                        <div><a href="<?php the_permalink();?>">Xem thêm</a></div>
                        <div><p>Tin liên quan</p></div>
                    <?php endif;?>
                    <?php if ($i>1):?>
                        <div><a href="<?php the_permalink();?>"><?php the_title(); ?></a></div>
                    <?php endif;?>
                <?php $i++; endwhile;wp_reset_query();}?>
                <?php $list_post = ob_get_contents();
 
        ob_end_clean();
        return $list_post;?>
<?php }
add_shortcode('showblog','displayblog');

Trong đoạn code này thì ob_start(); ob_end_clean(); ob_get_contents(); wp_reset_query(); rất quan trọng, ở những bài sau mình sẽ giải thích sâu hơn về những hàm này nhé.

Lưu ý ở posts_per_page các bạn muốn hiển thị bao nhiêu thì mình điền số vào bấy nhiêu nhé.

và cuối cùng là add shortcode [showblog] vào vị trí mình muốn hiển thị thôi là xong ^^

Dán shortcode vào vị trí muốn hiển thị
Đây là kết quả của đoạn shortcode trên

Kết luận

Vầy là kết thúc bài viết đầu tiên của blog, hi vọng sẽ giúp giải quyết được vấn đề của các bạn.

Các bạn có câu hỏi gì thì cứ comment nhé, mình sẽ cố gắng giải quyết trong thời gian ngắn nhất.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *