Как получить шаблон страницы / поста - PullRequest
1 голос
/ 11 апреля 2019

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

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

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

    <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>

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

1 Ответ

1 голос
/ 11 апреля 2019

Отредактировано для использования 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...