Wordpress Plugin

Pre_get_posts – thêm điều kiện query bài đăng trong category cho WordPress

Hôm nay cũng thật tình cờ, khách hàng của tôi yêu cầu trong các category query các bài đăng, nhưng nó phải thuộc một trong các Custom taxonomy khác nữa, ví dụ như sau:

Bài đăng A nằm trong Category X, nó cũng thuộc Custom taxonomy là Region, giờ phải hiển thị các bài đăng trong category đó, nhưng người dùng có thể chọn hiển thị các bài đăng có Taxonomy Region.

Code tôi làm như sau:

function jam_filter_get_posts($query) {
    if ( ! $query->is_main_query() )
        return $query;

    $taxquery = array(
        array(
            'taxonomy' => 'region',
            'field' => 'id',
            'terms' => array( 23 ),
            'operator'=> 'IN'
        )
    );

    $query->set( 'tax_query', $taxquery );

}
add_action( 'pre_get_posts', 'jam_filter_get_posts' );

Và chạy hoàn hảo !

Ghi chép ra đây để mình có thể dùng lại sau, và cũng để các bạn nếu cần dùng thì có thể lấy dùng nha !

Chúc cả nhà thành công !

TÁC GIẢ:

Tôi là Jam, thâm niên 7 năm thiết kế website và làm SEO. Hãy theo dõi blog của tôi để nhận được nhiều chia sẻ thú vị xung quanh chủ đề công nghệ.

Có 5 bình luận !

      1. category_parent; // assign parent ID (if exists) to $catid
        // the while loop will continue whilst there is a $catid
        // when there is no longer a parent $catid will be NULL so we can assign our $catParent
        $catParent = $cat->cat_ID;
        }
        return $catParent;
        }
        $parent_id=pa_category_top_parent_id (getCurrentCatID());
        //echo $parent_id;
        if(($parent_id==30)||($parent_id==28)||($parent_id==14)||($parent_id==29)||($parent_id==15)){
        if(($cat==30)||($cat==28)||($cat==14)||($cat==29)||($cat==15)){
        include_once "category-tienganh.php";
        }else {
        include_once "category-sub.php";
        }
        if($cat==446){
        include_once "category-nghe.php";
        }

        }
        if(($cat==527)) || ($cat==528)){
        include_once "category-hoc-tieng-anh.php";
        }if($parent_id==451){
        include_once "category-download.php";
        }
        else{
        include_once "category-tin-tuc.php";
        }
        ?>

        File đó đây

        1. Ôi bạn thân yêu, bạn nhầm một cách cơ bản do bạn không nghiên cứu template hierarchy của nó rồi nhé, không ai include như bạn đâu !

          Nếu bạn muốn hiển thị đặc biệt cho category nào đó, bạn dùng category-{ID}.php nhé !
          Nếu bạn muốn include cái gì đó, hãy dùng hàm “get_template_part(); nhé !
          Trường hợp nhiều cat chung một template như bạn thế kia thì ta làm cách khác, đó là trong lúc tạo Category ta sẽ cài thêm taxonomy_meta để click chọn giao diện, làm như thế thì chỉ cần 1 file category.php là xong !
          Chúc bạn thành công !

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 *