Как получить шаблон страницы/записи

Я пытаюсь добавить пользовательские div на свою индексную страницу и создал несколько шаблонов страниц, которые я думал использовать как способ отфильтровать страницы. Таким образом, если в сообщении используется «Шаблон мультимедиа», оно будет отображаться в этом div.

Но я изо всех сил пытаюсь написать правильный php-код, который будет перебирать все сообщения и находить сообщение, в котором используется этот шаблон.

В конце концов, я хочу найти сообщение/страницу, использующую «шаблон мультимедиа», и опубликовать его содержимое в следующем div:

    <div class = "home-media-content col-sm-3 px-1 pb-2">
        <div class = "embed-responsive embed-responsive-16by9">

        <?php  

            $pages = get_pages(); 
            foreach ($pages as $page) {
                echo $page->post_title; //Posting just for the test
                echo $page->template; //SHOULD GET THE TEMPLATE and if the template name is 'Media template' display post content


            }
        ?>


        </div>
    </div>

Я не уверен, что это лучший способ отображения пользовательских вещей, поэтому любые лучшие предложения приветствуются!

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
1
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отредактировано для использования WP_Query

Ниже показано, как я это сделаю, используя функции setup_postdata() и get_page_template(). Я думаю, вы должны иметь возможность получить эту информацию из метаданных '_wp_page_template' для каждой страницы, если вы не хотите настраивать постданные, но если вы все равно собираетесь выполнять правильный цикл, то последнее, вероятно, проще всего.

<div class = "home-media-content col-sm-3 px-1 pb-2">
    <div class = "embed-responsive embed-responsive-16by9">

        <?php

        $my_query = new WP_Query(
            array(
                'post_status' => 'publish',
                'post_type'   => 'page',
            )
        );


        if ( $my_query->have_posts() ) {
            while ( $my_query->have_posts() ) {
                $my_query->the_post();

                  the_title(); // Posting just for the test

                if ( get_page_template() === 'media-template.php' ) { // This needs to be the file slug rather than template name
                      do_something();
                } else {
                        do_something_else();
                }
            }
        }

            wp_reset_postdata(); // Reset postdata back to normal

        ?>


    </div>
</div>

это не работает. он даже печатает уже не заголовки страниц, а что-то другое. и я нашел эту функцию сам до [get_page_template()], но я не мог заставить ее работать.

Hexiety 12.04.2019 09:02

Я только что отредактировал свой ответ, поразмыслив, возможно, это более стандартизированный подход к использованию вместо этого WP_Query и фильтрации по страницам. Это определенно должно выводить заголовки страниц, так как это действительно обычная структура цикла.

Sephsekla 12.04.2019 09:56

Спасибо! Это очень помогло!

Hexiety 12.04.2019 10:57

Другие вопросы по теме