Search theo custom field trong wordpress và các ứng dụng của nó

Search theo custom field trong wordpress và các ứng dụng của nó

Ngày 20 - 03 - 2020 - Tại chuyên mục: Wordpress - Lượt xem: 15388

Để xây dựng tính năng search trong wordpress thì phải nói cực kỳ đơn giản, các bạn chỉ cần vài ba đoạn code nhỏ là có thể làm được. Nhưng… Search theo custom field ? Các bạn đã thử chưa 😀 Nếu chưa thì hôm này mình sẽ hướng dẫn cho các bạn cách để làm chức năng đó.

Để ôn lại 1 tý thì mình sẽ nhắc lại cách tạo 1 form search bình thường trong wordpress. Các bạn xem đoạn code phía dưới nha

Tạo form search trong wordpress

Form search đơn giản nhất

Search theo 1 post type nào đó

Trong ví dụ trên mình search các bài viết thuộc post type là post nha. Các post type khác sẽ không được hiển thị trong kết quả search

Search theo 1 category nào đó

Đoạn code trên cho phép chọn chuyên mục cần search.

Search theo custom field trong wordpress

Chức năng search theo custom field trong wordpress

Để dễ hình dung mình sẽ đưa ra yêu cầù rồi chúng ta sẽ theo yêu cầu mà làm chức năng nhé, yêu cầu như sau:

Tạo form search bất động sản theo từ khóa và khoảng giá. Khoảng giá ở đây có 2 giá trị là giá nhỏ nhất và giá lớn nhất, với giá của bất động sản được lưu ở custom field

Với yêu cầu như trên, chúng ta sẽ thự hiện 2 công việc chính là: Tạo form searchxử lý trả dữ liệu

Tạo form search theo custom field giá:

Các bạn chèn đoạn code sau vào vị trí mà các bạn mong muốn hiển thị form search. Chú ý code dưới chỉ là html chưa có giao diện gì cả, các bạn muốn đẹp thì thêm css vào nha.

Mình sẽ tạo form search theo phương thức get, khi sumit form website nó sẽ có đường dẫn ở dạng như sau: domain.com/?post_type=bat-dong-san&s=đất+nền&min-price=500&max-price=50000000

Chúng ta sẽ dựa vào các dữ liệu được truyền trên url để get các giá trị và xử lý.

Xử lý search dữ liệu và hiển thị kết quả:

Chắc các bạn cũng biết kết file hiển thị dữ liệu trả về của form search trong theme wordpress là file search.php. Vì thế để xử lý dữ liệu tìm kiếm chúng ta viết trong file search.php đoạn code sau.

Mình sẽ giải thích theo từng dòng để các bạn dễ theo dõi:

  • Từ dòng 2 đến dòng 5 thực hiện kiểm tra dữ liệu và lấy dữ liệu được truyền qua thông qua phương thức get $_GET
  • Dòng 7 số lượng bất động sản hiển thị là 10
  • Dòng 8 post_type ở đây sẽ nhận giá trị là ‘bat-dong-san’
  • Dòng 9 điều kiện search theo từ khóa
  • Dòng 10 đến 25 đây là khu vực truyền tham số search theo custom field
    • ‘relation’ => ‘AND’ các điều kiện sẽ kết hợp với nhau theo phương thức bằng
    • Dòng 12 đến dòng 17 điều kiện cho giá trị nhỏ nhất
    • Dòng 18 đến 23 điều kiện cho giá trị lớn nhất
  • Từ dòng 27 đến kết thúc là  vòng lặp get post trong wordpress

Một số ví dụ về search theo custom field khác

Ví dụ search các bài viết có trên 100 lượt views

Search 10 sản phẩm có trên 10 lượt mua và màu sắc là màu đỏ.

Tổng kết:

Bài viết hôm nay mình đã giới thiệu cho các bạn cách search theo custom field cũng như là query các dữ liệu có liên quan đến custom field. Biết được món này thì bạn không phải lo xử lý các vấn đề trong việc làm các site bất động sản hoặc site du lịch.

Bài viết này code hơi nhiều, bạn nào chưa hiểu chổ nào có thể comment phía dưới mình sẽ hỗ trợ. Nếu có thể mình sẽ làm video hướng dẫn.

Chào các bạn! À nhở ủng hộ site mới học wordpress của mình nha!

Huy Kira

Đam mê hóa học, ưng thi vào trường kinh tế... Đậu vào trường Sư phạm, quyết tâm đi dạy... Ra trường đi làm designer, tự học frontend, chuyển qua làm PHP, được công ty đào tạo laravel... Và hiện tại đang code react native(2015) => Fullstack ... ?? tối về viết blog... (Còn tiếp...)

11
  • It nhà quêCảm ơn bạn đã làm các video rất hay và bổ ích hy vọng có loạt bài tìm kiếm bằng ajax theo thuộc tính sản phẩm. Cảm ơn rất nhiều !

    Thích Trả lời 4 năm trước

  • Tien DungCảm ơn sếp, mấy cái này hầu như ở vn chả có ông nào chia sẻ cả :D

    Thích Trả lời 4 năm trước

  • Phạm SangChào bạn, bạn cho mình hỏi mấy dòng dưới này lấy ở đâu để mình vào học không bạn?. Cám ơn bạn. 'key' => 'price', 'value' => $maxprice, 'type' => 'NUMERIC', 'compare' => '<='

    Thích Trả lời 4 năm trước

  • Tuấn PhạmHi sếp, mình là newbie, có tạo 1 custom field là check code trong sản phẩm. Làm sao để khi search mã này nó hiển thị được sản phẩm đó ạ

    Thích Trả lời 3 năm trước

  • công ty chống thấm AZ Clearhay qúa, cảm ơn ad đã chia sẽ

    Thích Trả lời 2 năm trước

  • Thick QuotaXử lý search dữ liệu và hiển thị kết quả: sau khi ra được biến $the_query, gọi và gán vào biến global $wp_query là có thể sử dụng code mặc định của theme đang có sẵn. Bớt được công đoạn viết lại code file search và sử dụng được code trong file search mặc định. file hình demo: https://drive.google.com/file/d/13mo8fFdoGmeL0u4_1DJ2937TCRAT5AaE/view

    Thích Trả lời 1 năm trước

AVT