Запит шаблону сторінки за допомогою WP_Query


14

Я б хотів запитувати лише сторінки з певним шаблоном сторінки WP_Queryабо функцією, яка б повернула об'єкт публікації, але я не можу знайти жодної інформації про це в офіційному кодексі.

Відповіді:


23

Спробуйте це ... Припустимо, що назва шаблону "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...

Ви також можете використовувати get_posts або змінювати публікації запитів, щоб виконати роботу. Обидві ці функції використовують ті ж параметри, що і WP_Query .


20

Неправильно: що стосується Wordpress 3, вам потрібно щось схоже на:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

ДЯКУЮ ТОБІ!! Заштрихував цю сторінку занадто швидко, використовував прийняту відповідь. Це робить це. Для всіх інших відзначте масив всередині масиву всередині масиву ...
Джеремі Карлсон

3
Єдина відмінність тут - це post_type. В іншому випадку вам не потрібен meta_queryмасив для однієї спеціальної пари ключ / значення.
Rutwick Gangurde

Звичайно, потрібен мета-запит. За винятком того, що він може бути "вбудований" з простим масивом meta_keyі meta_valueабо з ним, який може включати кілька умов.
Maxime Culea

1

Шаблон сторінки зберігається як мета-значення з ключем "_wp_page_template".

Тому все, що вам потрібно, це використовувати цей ключ у параметрі мета запиту. Для прикладів

Дивіться http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query#Query_based_on_Custom_Field_and_Sorted_by_Value

та http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters


0

Якщо спроба когось неправильно призводить до нульових повідомлень, можливо, назва шаблону неправильна. Я спробував ім'я файлу php та ім'я мого шаблону, і вони не спрацювали. Тоді я вирішив перевірити поле вибору шаблонів, де ми вибираємо шаблон у редакторі сторінки. Я знайшов це:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

Я використовував templates-map/component-tutorial-1.phpі це спрацювало.


0

Якщо у вас шаблон є в іншій папці:

$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
        )
    )
);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.