Отображение нескольких страниц на одной странице WordPress

4 мая 2014 г., 21:12:56
Просмотры: 16.6K
Голосов: 1

У меня есть следующий код (любезно предоставленный alchemyth в ответ на мой вопрос на форуме WordPress.org здесь), который я хочу использовать для отображения множества страниц на одной странице:

<?php
$args = array(
  'post_type' => 'page',
  'post__in' => array( 2, 5, 35, 67 ) //список ID страниц
);
$page_query = new WP_Query( $args );
if( $page_query->have_posts() ) :
echo '<div class="pages-on-page">';
//здесь можно вывести общий заголовок или шапку//
while( $page_query->have_posts() ) : $page_query->the_post();
echo '<div class="page-on-page" id="page_id-' . $post->ID . '">';
//вывод содержимого для каждой страницы//
echo '</div>';
endwhile;
echo '</div>';
else:
//текст, если страницы не найдены//
endif;
wp_reset_postdata();
?>

Как новичок, я не уверен, куда его вставить, чтобы он заработал! Буду очень благодарен за помощь в этом вопросе.

0
Все ответы на вопрос 2
16

Ознакомьтесь с шаблонами страниц WordPress;

Вы можете создать файл со структурой, соответствующей вашей текущей теме, и разместить ваш код в области контента (или добавить хук для вашего специального контента).

Пример для темы Twenty Twelve:

/*
Template Name: Мой пользовательский шаблон страницы
*/

get_header(); ?>

<div id="primary" class="site-content">
    <div id="content" role="main">

        <?php
        $args = array(
          'post_type' => 'page',
          'post__in' => array( 2, 5, 35, 67 ) //список ID страниц
        );
        $page_query = new WP_Query( $args );
        if( $page_query->have_posts() ) :
        echo '<div class="pages-on-page">';
        //здесь можно вывести общий заголовок или верхний колонтитул//
        while( $page_query->have_posts() ) : $page_query->the_post();
        echo '<div class="page-on-page" id="page_id-' . $post->ID . '">';
        //выведите любое содержимое для каждой страницы//
        echo '</div>';
        endwhile;
        echo '</div>';
        else:
        //опциональный текст, если страницы не найдены//
        endif;
        wp_reset_postdata();
        ?>

    </div><!-- #content -->
</div><!-- #primary -->

****Не забудьте начать файл с < ? php

Сохраните этот код как PHP-файл с практически любым именем ваш_пользовательский_шаблон.php и поместите его в папку вашей дочерней темы. Затем создайте новую страницу и назначьте ей шаблон страницы Мой пользовательский шаблон страницы, как показано в коде выше.

Это должно помочь вам начать и увидеть ваш код на фронтенде сайта.

4 мая 2014 г. 21:18:11
Комментарии

Я разместил код на странице с помощью php-плагина, используя 'шаблон по умолчанию' и 'без родительской страницы' - но не работает - что я делаю не так?

martin martin
4 мая 2014 г. 21:23:21

Для начала мне нужно знать, о каком именно плагине идет речь. Но прежде чем это - вы ознакомились со ссылкой на WordPress Codex, которую я дал в своем ответе?

Douglas.Sesar Douglas.Sesar
4 мая 2014 г. 21:27:37

Плагин находится здесь. И да, я посмотрел, но должен признать, что многое для меня непонятно - буду разбираться дальше!

martin martin
4 мая 2014 г. 21:30:53

Какую тему вы используете? Возможно, я смогу помочь вам с примером шаблона.

Douglas.Sesar Douglas.Sesar
4 мая 2014 г. 21:40:47

Я использую twentytwelve — но создал дочернюю тему, так как уже внес некоторые изменения.

martin martin
4 мая 2014 г. 21:42:49

Будет ли полезно, если я отправлю URL?

martin martin
4 мая 2014 г. 21:52:13

Спасибо большое - однако у меня нет возможности создать пользовательскую страницу в режиме редактирования страницы. - Только "шаблон по умолчанию", "шаблон главной страницы", "шаблон полной страницы" и "вверх".

martin martin
4 мая 2014 г. 21:56:46

У вас есть доступ по FTP к вашему сайту? Вы можете перетащить файл в папку

Douglas.Sesar Douglas.Sesar
4 мая 2014 г. 21:57:23

Да - файл теперь в дочерней папке. Как мне его вызвать?

martin martin
4 мая 2014 г. 21:59:09

Просто обновите страницу редактирования в админке WordPress. Теперь шаблон должен появиться в выпадающем списке шаблонов страницы

Douglas.Sesar Douglas.Sesar
4 мая 2014 г. 21:59:46

К сожалению, безрезультатно - простите, это, должно быть, очень раздражает - я явно упускаю что-то очевидное!

martin martin
4 мая 2014 г. 22:06:40

Я просто копирую приведенный выше код и добавляю < ? php в начале, правильно?

martin martin
4 мая 2014 г. 22:17:44

Я попробовал добавить его в папку public_html (корневую папку) и вызвать напрямую в адресной строке - просто белая страница :(

martin martin
4 мая 2014 г. 22:26:44

Я должен сказать +1 за вашу помощь - жаль, что у меня не получилось заставить это работать! :/

martin martin
4 мая 2014 г. 22:53:30

Вам нужно добавить код для вывода //выводите любой вывод, который вам нужен на странице//

Brad Dalton Brad Dalton
5 мая 2014 г. 00:58:05

@ Brad Dalton - огромное спасибо - наконец-то прорыв!!

martin martin
5 мая 2014 г. 13:51:54
Показать остальные 11 комментариев
1

Этот код работает для меня с темой WP Twenty Twelve, не забудьте изменить ID страниц

<?php
/*
Template Name: Моя пользовательская страница
*/

get_header();
$args = array(
    'posts_per_page' => get_option('posts_per_page'), // значение по умолчанию берётся из настроек, но вы можете использовать и собственное
    'paged'          => $current_page // текущая страница
    );
    query_posts(
    array( 'post_type'=>'page', 'post__in' => array( 6891, 9400 ) ) //измените ID страниц
); ?>

<div id="primary" class="site-content">
    <div id="content" role="main">
<?php
            while ( have_posts() ) :
                the_post();
                ?>
                <?php if ( has_post_thumbnail() ) : ?>
                    <div class="entry-page-image">
                        <?php the_post_thumbnail(); ?>
                    </div><!-- .entry-page-image -->
                <?php endif; ?>

                <?php get_template_part( 'content', 'page' ); ?>

                <?php endwhile; // конец цикла. ?>

    </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
2 мая 2020 г. 02:06:07
Комментарии

Привет! Спасибо за ваш вклад и добро пожаловать на WordPress.StackExchange! Несколько моментов, которые стоит учесть для возможного [редактирования] вашего ответа, что может принести больше голосов "за" и, следовательно, открыть больше возможностей для вас на этом сайте: Пожалуйста, учитывайте, что не все могут читать кириллические символы. Также полезно объяснить, почему ваш фрагмент кода поможет автору вопроса решить его проблему. Надеюсь, это поможет! Хорошего дня!

kaiser kaiser
2 мая 2020 г. 03:44:30