Как отобразить содержимое страницы в шаблоне страницы?
На своем сайте WordPress я создал пользовательский шаблон страницы, который содержал пользовательский запрос [с использованием WP_Query()
]. С помощью этого запроса я прекрасно могу получить сообщения определенной категории. Но я хочу показать содержимое страницы вместе с запрошенными сообщениями.
Все будет так:
---------------------------
Заголовок страницы
Содержимое страницы
Заголовок запрошенного сообщения
Запрошенный пост содержание
---------------------------
- Что я могу сделать?
2 answers
Я использую два цикла. Первый цикл предназначен для отображения содержимого страницы, а второй цикл - для отображения содержимого запрашиваемой записи. Я комментировал коды там, где это было необходимо. Я подчеркнул в циклах, как Deckster0 сказал в поддержке WordPress, что the_content()
работает только внутри цикла WordPress. Я помещаю этот код в свой собственный шаблон:
<?php
/*
* Template Name: My Template
*/
get_header(); ?>
<div id="container">
<div id="content" class="pageContent">
<h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title -->
<?php
// TO SHOW THE PAGE CONTENTS
while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop -->
<div class="entry-content-page">
<?php the_content(); ?> <!-- Page Content -->
</div><!-- .entry-content-page -->
<?php
endwhile; //resetting the page loop
wp_reset_query(); //resetting the page query
?>
<?php
// TO SHOW THE POST CONTENTS
?>
<?php
$my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example
?>
<?php if ( $my_query->have_posts() ) : ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title -->
<div class="entry-content">
<?php the_excerpt(); ?> <!-- Queried Post Excerpts -->
</div><!-- .entry-content -->
<?php endwhile; //resetting the post loop ?>
</div><!-- #post-<?php the_ID(); ?> -->
<?php
wp_reset_postdata(); //resetting the post query
endif;
?>
</div><!-- #content -->
</div><!-- #container -->
Для этого обычно используются две петли, но немного передозировка.
Каждое сообщение или страница дают вам супер-переменную $post
. Вы когда-нибудь задумывались, почему ваш get_post_meta()
работает с простым $post->ID
;) ?
Итак, прежде чем запускать WP_Query(), который получает ваши перечисленные записи, вы можете получить доступ к текущим данным страницы/публикации с помощью $post->ID
, $post->post_content
, $post->guid
и так далее.
В цикле эта переменная заполняется зацикленной записью. Чтобы сохранить его на потом, вы можете либо создать новую переменную
$temp_post = $post
// new WP_Query() + loop here
Или позвоните
Запрос Wp_reset_query()
После перечисления. Последнюю функцию следует вызывать в любом случае, чтобы убедиться, что данные на боковой панели соответствуют текущей странице/публикации.