Как отобразить содержимое страницы в шаблоне страницы?
-
-
В чем проблема?Это шаблон страницы,поэтому у вас есть доступ к содержимому страницы.С помощью другого отдельного запроса вы,например,получаете доступ к конкретному сообщению и,таким образом,можете выводить его содержимое.Так?What is the problem? This is a page template, so you have access to the page content. By means of another separate query you gain access to a specific post, for instance, and thus can output its content. So?
- 2
- 2013-03-11
- tfrommen
-
Пожалуйста,проявите терпение,прежде чем голосовать против.Я борюсь за это,и тогда я нашел решение.Я попытался задать здесь вопросы и ответы,чтобы поделиться логикой с другими - я думаю,что это прояснит факт так,как я его ищу.Надеюсь,вопросы и ответы вам понятны.Please be patient before voting down. I's struggling for it and then I found the solution. I tried to Q&A here to share the logic with others - I think it will clarify the fact in a way I's looking for it. Hope the Q & A is clear to you.
- 0
- 2013-03-11
- Mayeenul Islam
-
Во-первых,я ** не ** отрицал ваш вопрос.Во-вторых,спасибо,что поделились с нами своими знаниями.Вы абсолютно правы в этом.Я думаю,проблема в том,что этот _вопрос_ не так уж и сложно решить для опытных пользователей/разработчиков WP,а также в том,что вы разместили вопрос самостоятельно.Если вы хотите задать вопрос и ответить с самого начала,просто укажите свой ответ/решение прямо на той же странице,на которой вы пишете свой вопрос.Под кнопкой _Post Your Question_ есть флажок ** Ответить на свой вопрос **.Еще раз спасибо.Firstly, I did **not** downvote your question. Secondly, thanks for sharing your knowledge with us. You're absolutely right to do so. I guess, the problem is/was that this _question_ was not that hard to solve for experienced WP users/developers, as well as the fact that you posted the question alone. If you want to question & answer right from the start, just include your answer/solution directly on the same page that you write your question on. Below the _Post Your Question_ button there is a check box **Answer your own question**. Thanks again.
- 0
- 2013-03-11
- tfrommen
-
wp_reset_postdata () для спасения.Должно выполняться после каждого пользовательского запроса.`wp_reset_postdata()` for the rescue. Should be done _after each custom query_.
- 0
- 2013-03-11
- kaiser
-
2 ответ
- голосов
-
- 2013-03-11
Я использую две петли. Первый цикл предназначен для отображения содержимого страницы,а второй цикл - для отображения содержимого запрошенного сообщения. Я прокомментировал коды там,где это необходимо. Я сделал акцент на циклах,как сказал 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 -->
I'm using two loops. First loop is to show the page content, and the second loop is to show the queried post contents. I commented into the codes where necessary. I emphasized into the loops, as Deckster0 said in WordPress support that,
the_content()
works only inside a WordPress Loop. I'm placing these code into a my own template:<?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 -->
-
Этот второй запрос не должен находиться внутриif (have_posts ()),потому что это утверждение всегда будет истинным.Вы должны вызватьif ($my_query-> have_posts ()) после строк `$my_query=new WP_Query ('cat=1'); и args,если хотите проверить,есть ли результаты у этого запроса.That second query shouldn't be inside `if( have_posts() )` because that statement will always be true. You should call `if( $my_query->have_posts() )` after the `$my_query = new WP_Query( 'cat=1' );` and args lines if you want to check that query has results.
- 0
- 2013-04-12
- t31os
-
@t31os ты прав.Это моя вина.Сейчас поправил код на такой.Спасибо за идентификацию.:)@t31os you are right. It's my fault. Now corrected the code to such. Thanks for the identification. :)
- 0
- 2014-05-28
- Mayeenul Islam
-
- 2013-03-11
Обычно для этого используются две петли,но с небольшой передозировкой.
Каждая публикация или страница содержит суперпеременную
$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 ()
после листинга.Последнюю функцию следует вызывать в любом случае,чтобы убедиться,что данные на боковой панели соответствуют текущей странице/публикации.
Two loops is common to do this, but a bit overdosed.
Every post or page gives you the super-variable
$post
. Ever wondered why yourget_post_meta()
works with a simple$post->ID
;) ?So, before you start the WP_Query() that gets your listed posts, you can access the current page-/post-data with
$post->ID
,$post->post_content
,$post->guid
and so on.In the loop, this variable gets filled by the looped post. To save it for later, you can either make a new variable
$temp_post = $post // new WP_Query() + loop here
or call
wp_reset_query()
after the listing. The last function should be called anyway to ensure that the data in your sidebar is the right for the current page/post.
На своем сайте WordPress я создал настраиваемый шаблон страницы,который содержал настраиваемый запрос [с использованием
WP_Query()
].С помощью этого запроса я могу получить сообщения определенной категории.Но я хочу показать содержимое страницы вместе с запрошенными сообщениями.Это будет примерно так:
---------------------------
Заголовок страницы
содержимое страницы
Заголовок запрошенного сообщения
запрошенное содержание сообщения
---------------------------