Truy vấn mẫu trang với WP_Query


14

Tôi chỉ muốn truy vấn các trang có mẫu trang nhất định có WP_Queryhoặ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:


23

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 .


20

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'
        )
    )
);

CẢM ƠN BẠN!! Lướt qua trang này quá nhanh, sử dụng câu trả lời được chấp nhận. Điều này làm điều đó. Đối với bất kỳ ai khác, hãy lưu ý mảng bên trong mảng bên trong mảng ...
Jeremy Carlson

3
Sự khác biệt duy nhất ở đây là post_type. Nếu không, bạn không cần meta_querymảng cho một cặp khóa / giá trị tùy chỉnh duy nhất.
Rutwick Gangurde

Tất nhiên các truy vấn meta là cần thiết. Ngoại trừ nó có thể là "nội tuyến" với meta_keymeta_valuevới một mảng đơn giản, có thể bao gồm nhiều điều kiện.
Maxime Culea


0

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.phpvà nó đã làm việc.


0

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
        )
    )
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.