Custom query widget post của elementor, ví dụ chúng ta cần custom query chỗ bài viết liên quan trong cùng chuyên mục, mà elementor mục query related nó lấy luôn các bài viết của chuyên mục khác. Vậy nên chúng ta cần custom chỗ này
Tại mục Query ID chúng ta cần tạo một query ID riêng của chúng ta
Ví dụ đây mình tạo là mypro_related_posts
Mở file functions.php lên và copy mã sau vào
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
add_action( 'elementor/query/mypro_related_posts', 'myproRelatedPosts' ); function myproRelatedPosts( $query){ global $post; //Lấy list id category hiện tại của bài viết, kết quả trả về sẽ là object $term_currents_object= get_the_terms( $post->ID, "category" ); $term_currents_array = array(); $term_relates = array(); //dùng vòng lặp foreach để lấy list id category hiện tại, đồng thời dùng get_ancestors để lấy id category cha, dùng array_merge để gọp các id category cha thành một mảng, dùng array_push để tạo một mảng id category hiện tại từ object id category hiện tại foreach ( $term_currents_object as $term_current ): $term_relates = array_merge($term_relates,get_ancestors($term_current->term_id,'category')); array_push($term_currents_array,$term_current->term_id); endforeach; $child_relate_terms = array(); //dùng vòng lặp foreach để duyệt qua list id category cha, qua đó dùng get_term_children đẻ lấy list id category con, đồng thời dùng array_merge để gọp chúng thành một mảng các id category con foreach ($term_relates as $term_relate ): $child_relate_terms= array_merge($child_relate_terms,get_term_children($term_relate,'category')); endforeach; //dùng array_merge để gọp mảng id category con, id category cha, id cateogry hiện tại và chúng ta sẽ có được list id category liên quan $list_id_term_relate = array_merge($child_relate_terms,get_ancestors($term_current->term_id,'category'),$term_currents_array ); //Truy vấn bài viết liên quan $tax_query = array( array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $list_id_term_relate ) ); $query->set( 'tax_query', $tax_query ); } |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress