Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

Tôi đang cố gắng làm điều này sau 2 giờ. Tôi có các trường tùy chỉnh trong cơ sở dữ liệu và tôi muốn nhận post_id bởi các khóa meta hoặc giá trị meta. Tôi đang làm như thế này

$post_id = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); // giving only 140

Điều này đang hoạt động tốt, nhưng điều này chỉ cung cấp một post_id và tôi muốn tất cả các post_id có thể phù hợp với meta_value. Ví dụ: Tôi có ba bài 140,141,142, trong cơ sở dữ liệu. Nhưng bằng truy vấn này, tôi chỉ nhận được 140. Bất kỳ ý tưởng nào để có được tất cả các post_id có thể bằng truy vấn này hoặc bất kỳ cách nào khác bằng cách so sánh meta_fields ...

Cảm ơn

Hỏi ngày 21 tháng 10 năm 2013 lúc 11:17Oct 21, 2013 at 11:17

Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /

Đã trả lời ngày 21 tháng 10 năm 2013 lúc 11:21Oct 21, 2013 at 11:21

Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

Hoàng tử Singhprince SinghPrince Singh

4.8834 Huy hiệu vàng27 Huy hiệu bạc32 Huy hiệu Đồng4 gold badges27 silver badges32 bronze badges

1

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id);

Để biết thêm thông tin ... http://codex.wordpress.org/ class_reference/wpdb

Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

Amar Singh

5.2532 Huy hiệu vàng25 Huy hiệu bạc53 Huy hiệu Đồng2 gold badges25 silver badges53 bronze badges

Đã trả lời ngày 21 tháng 10 năm 2013 lúc 11:31Oct 21, 2013 at 11:31

Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

MAY MẮN MAY MẮNLUCKY

812 Huy hiệu Đồng2 bronze badges

0

prefix;
$wpdb_tablename = $wpdb_prefix.'Table_Name';
$result = $wpdb->get_results(sprintf('SELECT `colum1`, `colum2` FROM `%2$s` WHERE `user_id` = %d LIMIT 1', $user_id, $wpdb_tablename));

print_r($result); exit;
?>

Đã trả lời ngày 12 tháng 1 năm 2021 lúc 5:26Jan 12, 2021 at 5:26

Hướng dẫn how do i select a query in wordpress? - làm cách nào để chọn một truy vấn trong wordpress?

Nội dung

  • 1Description Description
    • 1.1assumptions được thực hiện trong bài viết này Assumptions made in this Article
  • 2Code cho mẫu trang Code for the Page Template
    • 2.1 Truy vấn The query
    • 2.2 Vòng lặp sửa đổi The Revised Loop
      • 2.2.1within vòng lặp Within the Loop
    • 2.3 Mẫu trang hoàn thành The Completed Page Template
  • 3Query dựa trên trường và danh mục tùy chỉnh Query based on Custom Field and Category
  • 4Query dựa trên trường tùy chỉnh và được sắp xếp theo giá trị Query based on Custom Field and Sorted by Value
  • 5Query theo tên danh mục và khóa trường tùy chỉnh được sắp xếp theo giá trị của khóa Query by Category Name and Custom Field Key Sorted by Key's Value
  • 6Acknowledgements Acknowledgements
  • 7Related Related
  • 8Resources Resources

Sự mô tả

Tại một số điểm trong sự nghiệp phát triển WordPress của bạn, bạn có thể được trình bày với nhu cầu hiển thị một hoặc nhiều bài đăng bằng cách sử dụng các tiêu chí được chọn không được cung cấp bởi kiến ​​trúc query_posts của WordPress. Chẳng hạn, có thể cần phải tham gia các bảng WordPress để xác định bài đăng nào sẽ được hiển thị hoặc bạn có thể muốn sử dụng dữ liệu được lưu trữ trong các bảng của riêng bạn để xác định bài đăng nào sẽ được hiển thị.

Ví dụ thực tế, được nêu dưới đây, thể hiện một quá trình chọn tất cả các bài đăng với một giá trị trường tùy chỉnh cụ thể được lưu trữ và hiển thị chúng trong một trang dựa trên một mẫu trang. Ban đầu, mã này được sử dụng để triển khai plugin gắn thẻ bài, cho phép tổ chức các bài đăng trong các bộ sưu tập ít cấu trúc hơn so với các danh mục WordPress. Việc sử dụng của riêng bạn có thể rất khác nhau, nhưng nội dung và ví dụ vẫn sẽ cung cấp cho bạn một giới thiệu hữu ích cho quy trình chung liên quan.

Các giả định được thực hiện trong bài viết này

Nói chung, bài viết này giả định rằng bạn có kiến ​​thức làm việc về các khả năng của PHP, MySQL/MariaDB và WordPress.

Tuy nhiên, các giả định cụ thể cho ví dụ là:

  • Bạn có ít nhất một bài đăng với dữ liệu trường tùy chỉnh. Các trường tùy chỉnh phải có khóa 'thẻ' và giá trị của 'email'
  • Bạn đã tạo một trang và liên kết một mẫu trang với trang đó. Đối với ví dụ này, giả sử tên mẫu là 'QB trên' và được sao chép từ mẫu WP-Content/Themes/Index.php. Nếu bạn không quen thuộc với quy trình này, hãy làm theo các hướng dẫn trong việc tạo các mẫu trang của riêng bạn.
  • Vì đây là một chủ đề nhà phát triển có phần nâng cao, nên sự quen thuộc với khái niệm WordPress cốt lõi của vòng lặp được đề xuất.

Mã cho mẫu trang

Truy vấn

Để bắt đầu, cần phải truy xuất bản ghi chứa các bài đăng bạn muốn hiển thị. Để thực hiện điều này, hãy tạo một tập kết quả bằng lớp cơ sở dữ liệu WordPress $ WPDB. Lưu ý rằng câu lệnh Chọn MySQL/MariaDB minh họa một lần tham gia đơn giản. Ở đây, $ PagePosts sẽ chứa một mảng các đối tượng. Mỗi đối tượng sẽ đại diện cho một bài đăng được xuất bản có cặp giá trị khóa trường tùy chỉnh - với khóa là 'thẻ' và giá trị là 'email':simple JOIN. Here, $pageposts will contain an array of objects. Each object will represent a published post that has custom field key-value pair - with the key being 'tag' and the value being 'email':

 posts.* 
    FROM $wpdb->posts, $wpdb->postmeta
    WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
    AND $wpdb->postmeta.meta_key = 'tag' 
    AND $wpdb->postmeta.meta_value = 'email' 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'post'
    AND $wpdb->posts.post_date < NOW()
    ORDER BY $wpdb->posts.post_date DESC
 ";

 $pageposts = $wpdb->get_results($querystr, OBJECT);
 
 ?>

Vòng lặp sửa đổi

Bây giờ, để hiển thị các bài đăng được thu thập thành $ pagePosts theo các tiêu chí chọn trước đó, bạn cần thay thế vòng lặp bằng mã vòng lặp của riêng bạn trong mẫu trang QB trên. Điều này đòi hỏi phải tạo một vòng lặp sửa đổi chu kỳ qua các bài đăng được lưu trữ trong $ pagePosts và hiển thị chúng. Lưu ý: Cấu trúc / đánh dấu trong vòng lặp bên dưới được lấy từ chủ đề mặc định WordPress.default theme.

 
 
 
 
 
 

Not Found

Sorry, but you are looking for something that isn't here.

Và đó là nó!

Để đi qua các phần quan trọng của mã, từng dòng, bạn có:

  • Một bài kiểm tra để đảm bảo rằng truy vấn đã điền vào trang PagePosts thực sự đã tìm thấy một số bài đăng phù hợp với các tiêu chí chọn lọc:
  • Một vòng lặp foreach để đi qua các bài đăng được trả về trong $ pagePosts và hiển thị chúng:
  • Một tuyên bố rằng chúng tôi đang sử dụng biến WordPress toàn cầu $ Post để làm cho các thẻ mẫu hoạt động (chúng sẽ không được điền bởi setup_postdata () đúng cách nếu không):
________số 8
  • Và, một cuộc gọi đến chức năng định dạng bài viết WordPress, setup_postdata (), tự động điền các biến cần thiết:

Trong vòng lặp

Vì setup_postdata ($ post); Đã được gọi trong ví dụ của chúng tôi, bạn có thể sử dụng cùng một thẻ mẫu có thể được bao gồm trong vòng lặp WordPress bình thường, như The_Content () và The_Permalink (). Điều này có nghĩa là bạn có thể tạo kết quả hiển thị bài đăng của riêng mình bằng cách sử dụng mẫu trang với số lượng ồn ào tối thiểu, tự động tận dụng các plugin khác nhau mà bạn có thể đã kích hoạt trong blog WordPress của mình để cung cấp thêm định dạng và chức năng.

Mẫu trang hoàn thành

Dưới đây là một ví dụ đầy đủ về mẫu mới hoạt động với chủ đề mặc định WordPress.default theme.

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
0

Điều quan trọng cần lưu ý ở đây là ví dụ trên sẽ chỉ hoạt động khi Object hoặc Object_K (cho kết quả duy nhất) được truyền dưới dạng tham số "output_type" cho $ wpdb-> get_results (). setup_postdata () yêu cầu một đối tượng và sẽ không hoạt động khi Array_A hoặc Array_N được chuyển vào $ wpdb-> get_results ().only when OBJECT or OBJECT_K (for unique results) is passed as the "output_type" parameter for $wpdb->get_results(). setup_postdata() requires an object and will not work when ARRAY_A or ARRAY_N are passed into $wpdb->get_results().

Truy vấn dựa trên trường và danh mục tùy chỉnh

Ví dụ tiếp theo này đặt biến $ queryStr được sử dụng trong ví dụ trên, để có tất cả các bài đăng trong loại 1.2 và 3, có meta_key 'paragraf', và sau đó được sắp xếp tăng dần bởi meta_values. Ví dụ này lượm lặt được từ phản hồi của Otto42 trong chủ đề diễn đàn 121011.

Sử dụng ví dụ này cho phiên bản trước WordPress 2.3:

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
1

Sử dụng ví dụ này cho WordPress phiên bản 2.3: Ví dụ này lượm lặt được từ phản hồi của Kernow trong diễn đàn chủ đề 121011 This example gleaned from kernow's response in Forum Topic 121011

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
2


Các ví dụ trước không hoạt động với WordPress phiên bản 2.5 trở lên.

Ví dụ này, được thử nghiệm WordPress 2.9.2, được thực hiện để nhận các bài đăng trong các danh mục được chọn sau một ngày, được sắp xếp tăng dần. Nó giới hạn số lượng chỉ là 4 mục được trả lại.

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
3

$ Wpdb toàn cầu; Dòng dừng lỗi nghiêm trọng: Gọi đến hàm thành viên get_var () về lỗi không phải đối tượng.

Truy vấn dựa trên trường tùy chỉnh và được sắp xếp theo giá trị

Ví dụ này kéo các trang bằng một khóa trường tùy chỉnh nhất định, sau đó sắp xếp giá trị của khóa.

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
4

Truy vấn theo tên danh mục và khóa trường tùy chỉnh được sắp xếp theo giá trị của khóa

Ví dụ này chọn các bài đăng có tên danh mục chung và khóa trường tùy chỉnh, sau đó sắp xếp lựa chọn theo giá trị khóa tùy chỉnh.

$post_id = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE (meta_key = 'mfn-post-link1' AND meta_value = '". $from ."')");
print_r($post_id); /
5

Sự nhìn nhận

Rất cám ơn Kafkaesquii đã chỉ ra một phương pháp đơn giản hơn trong việc điền vào các biến toàn cầu thích hợp, v.v., sử dụng setup_postdata ().

  • Lớp: WPDB - Tổng quan về việc sử dụng đối tượng $ WPDB
  • Hướng dẫn: Hiển thị bài đăng bằng truy vấn chọn tùy chỉnhDisplaying Posts Using a Custom Select Query
  • Hướng dẫn: Thực hiện các truy vấn phân loại nâng cao
  • Hook hành động: pre_get_posts - sửa đổi các truy vấn WordPress trước khi chúng được thực thi
  • Hàm: query_posts () - Thực hiện các truy vấn tùy chỉnh bổ sung
  • Hàm: setup_postdata () - Dữ liệu truy vấn thiết lập cho các kết quả riêng lẻ trong vòng lặp

Tài nguyên

  • Truy vấn cho nhiều giá trị meta/trường tùy chỉnh bài đăng

Chọn ví dụ truy vấn là gì?

Chọn các câu lệnh Cú pháp là: chọn cột1, cột2 từ Bảng1, Bảng2 trong đó cột2 = 'value';Trong câu lệnh SQL ở trên: mệnh đề chọn chỉ định một hoặc nhiều cột cần truy xuất;Để chỉ định nhiều cột, hãy sử dụng dấu phẩy và không gian giữa các tên cột.SELECT column1, column2 FROM table1, table2 WHERE column2='value'; In the above SQL statement: The SELECT clause specifies one or more columns to be retrieved; to specify multiple columns, use a comma and a space between column names.

Truy vấn WP là gì?

WP_Query là gì?WP_Query là một lớp PHP để xây dựng các truy vấn cho cơ sở dữ liệu WordPress và trả về các bài đăng, trang hoặc các đối tượng tùy chỉnh khác để hiển thị trên trang.Nó cho phép các nhà phát triển xây dựng các tìm kiếm phức tạp trong khi loại bỏ sự cần thiết phải viết các truy vấn SQL riêng biệt.a PHP class for constructing queries to the WordPress database and returning posts, pages, or other custom objects to render on the page. It allows developers to build complex searches while removing the need to write separate SQL queries.

WPDB được xác định ở đâu trong WordPress?

Theo mặc định, biến $ WPDB là một thể hiện của lớp WPDB kết nối với cơ sở dữ liệu WordPress được xác định trong wp-config.php.Nếu chúng ta muốn tương tác với các cơ sở dữ liệu khác, chúng ta có thể khởi tạo một thể hiện khác của lớp WPDB.wp-config. php . If we want to interact with other databases, we can instantiate another instance of wpdb class.