Як відобразити вміст сторінки в шаблоні сторінки?


13

На своєму сайті WordPress я зробив шаблон користувальницької сторінки, який містив користувальницький запит [використовуючи WP_Query()]. За допомогою цього запиту я можу прекрасно отримати повідомлення певної категорії. Але я хочу показати вміст сторінки разом із запитами.

Річ буде такою, як:
---------------------------

Заголовок сторінки

вміст сторінки

Заголовок запиту

вміст запитуваної публікації
---------------------------

  • Що я можу зробити?

2
В чому проблема? Це шаблон сторінки, тому у вас є доступ до вмісту сторінки. За допомогою іншого окремого запиту, наприклад, ви отримуєте доступ до певної публікації, і таким чином можете виводити її вміст. Тому?
tfrommen

Будьте терплячі, перш ніж проголосувати. Я борюся за це, і тоді я знайшов рішення. Я спробував відповісти на питання і відповіді, щоб поділитися логікою з іншими - я думаю, що це з’ясує факт таким чином, як я його шукаю. Сподіваємось, питання Q вам зрозумілі.
Mayeenul Islam

По-перше, я не спростував вашого питання. По-друге, дякую, що поділилися з нами своїми знаннями. Ти абсолютно прав на це. Я здогадуюсь, проблема полягає в тому, що це питання вирішити не так складно для досвідчених користувачів / розробників WP, а також те, що ви поставили це питання самостійно. Якщо ви хочете ставити запитання та відповідати з самого початку, просто включіть свою відповідь / рішення безпосередньо на ту ж сторінку, на якій ви пишете своє запитання. Під кнопкою " Розмістити своє запитання" є прапорець Відповідь на власне питання . Знову дякую.
tfrommen

wp_reset_postdata()для порятунку. Слід виконати кожен замовлений запит .
кайзер

Відповіді:


21

Я використовую дві петлі. Перший цикл - це показ вмісту сторінки, а другий цикл - вміст запиту, який запитується. Я коментував коди там, де це було потрібно. Я наголосив на циклі, як 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 -->

Цей другий запит не повинен знаходитися всередині, if( have_posts() )оскільки це твердження завжди буде істинним. Вам слід зателефонувати if( $my_query->have_posts() )за $my_query = new WP_Query( 'cat=1' );рядками та args, якщо ви хочете перевірити, чи має запит результати.
t31os

@ t31, ти правий. Це моя вина. Тепер виправлено код до такого. Дякую за ідентифікацію :)
Іслам Мейєнінул,

0

Для цього звичайно дві петлі, але трохи передозовані.

Кожна публікація або сторінка дає вам супер-змінну $post. Ніколи не замислювалися, чому твої get_post_meta()твори з простим $post->ID;)?

Тому, перш ніж почати WP_Query () , який отримує ваші перераховані повідомлення, ви можете отримати доступ до поточної PAGE- / пост-дані з $post->ID, $post->post_content, $post->guidі так далі.

У циклі ця змінна заповнюється циклічним повідомленням. Щоб зберегти його на потім, ви можете зробити нову змінну

$temp_post = $post

// new WP_Query() + loop here

або зателефонуйте

wp_reset_query ()

після переліку. Останню функцію слід все-таки викликати, щоб переконатися, що дані на вашій бічній панелі є правильними для поточної сторінки / публікації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.