Tôi chỉ muốn truy vấn các trang có mẫu trang nhất định có WP_Query
hoặc một hàm sẽ trả về đối tượng bài đăng, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về điều đó trên bộ mã chính thức.
Tôi chỉ muốn truy vấn các trang có mẫu trang nhất định có WP_Query
hoặc một hàm sẽ trả về đối tượng bài đăng, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về điều đó trên bộ mã chính thức.
Câu trả lời:
Hãy thử điều này ... Giả sử tên mẫu là 'my_template.php',
$query = new WP_Query(
array(
'post_type' => 'page',
'meta_key' => '_wp_page_template',
'meta_value' => 'my_template.php'
)
);
//Down goes the loop...
Bạn cũng có thể sử dụng get_posts hoặc sửa đổi các bài đăng truy vấn để hoàn thành công việc. Cả hai hàm này đều sử dụng cùng tham số với WP_Query .
Không chính xác: kể từ wordpress 3, bạn cần một cái gì đó giống như:
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'my_template.php'
)
)
);
post_type
. Nếu không, bạn không cần meta_query
mảng cho một cặp khóa / giá trị tùy chỉnh duy nhất.
meta_key
và meta_value
với một mảng đơn giản, có thể bao gồm nhiều điều kiện.
Mẫu trang được lưu trữ dưới dạng giá trị meta với khóa "_wp_page_template".
Vì vậy, tất cả những gì bạn cần là sử dụng khóa đó trong một tham số truy vấn meta. Ví dụ như
và http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameter
Nếu bất kỳ ai cố gắng không chính xác dẫn đến bài viết không, có lẽ tên mẫu là sai. Tôi đã thử tên tệp php và tên mẫu của tôi và chúng không hoạt động. Sau đó, tôi quyết định kiểm tra hộp chọn mẫu nơi chúng tôi chọn mẫu trên trình chỉnh sửa trang. Tôi đã tìm thấy cái này:
<option value="templates-map/component-tutorial-1.php"
selected="selected">Tutorial -1</option>
Tôi đã sử dụng templates-map/component-tutorial-1.php
và nó đã làm việc.
Nếu bạn có mẫu bên trong một thư mục khác:
$args = array(
'post_type' => 'page', //it is a Page right?
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
)
)
);