Bagaimana cara menampilkan konten halaman dalam templat halaman?


13

Di situs WordPress saya, saya membuat templat halaman khusus, yang berisi permintaan khusus [menggunakan WP_Query()]. Dengan permintaan itu, saya dapat dengan sempurna mendapatkan posting dari kategori tertentu. Tapi saya ingin menunjukkan konten halaman bersama dengan posting yang diminta.

Masalahnya akan seperti:
---------------------------

Tajuk Halaman

isi halaman

Kueri Posting Pos

isi posting yang diminta
---------------------------

  • Apa yang dapat saya?

2
Apa masalahnya? Ini adalah templat halaman, jadi Anda memiliki akses ke konten halaman. Dengan menggunakan kueri lain yang terpisah, Anda mendapatkan akses ke pos tertentu, misalnya, dan dengan demikian dapat menampilkan kontennya. Begitu?
tfrommen

Harap bersabar sebelum memberikan suara. Saya berjuang untuk itu dan kemudian saya menemukan solusinya. Saya mencoba Tanya Jawab di sini untuk berbagi logika dengan yang lain - saya pikir itu akan mengklarifikasi fakta dengan cara saya mencarinya. Semoga Tanya Jawabnya jelas bagi Anda.
Mayeenul Islam

Pertama, saya tidak membatalkan pertanyaan Anda. Kedua, terima kasih telah berbagi pengetahuan Anda dengan kami. Anda memang benar untuk melakukannya. Saya kira, masalahnya adalah bahwa pertanyaan ini tidak sulit untuk dipecahkan untuk pengguna / pengembang WP yang berpengalaman, dan juga fakta bahwa Anda memposting pertanyaan itu sendirian. Jika Anda ingin bertanya & menjawab langsung dari awal, cukup sertakan jawaban / solusi Anda langsung di halaman yang sama dengan tempat Anda menulis pertanyaan. Di bawah tombol Posting Pertanyaan Anda ada kotak centang Jawab pertanyaan Anda sendiri . Terima kasih lagi.
tfrommen

wp_reset_postdata()untuk penyelamatan. Harus dilakukan setelah setiap permintaan kustom .
kaiser

Jawaban:


21

Saya menggunakan dua loop. Loop pertama adalah untuk menampilkan konten halaman, dan loop kedua adalah untuk menunjukkan konten posting yang diminta. Saya berkomentar ke dalam kode-kode jika perlu. Saya menekankan ke loop, sebagai Deckster0 mengatakan di WordPress mendukungnya , the_content()hanya bekerja di dalam WordPress Loop. Saya menempatkan kode ini ke dalam template saya sendiri:

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

Kueri kedua itu seharusnya tidak ada di dalam if( have_posts() )karena pernyataan itu akan selalu benar. Anda harus memanggil if( $my_query->have_posts() )setelah $my_query = new WP_Query( 'cat=1' );dan mendebat baris jika Anda ingin memeriksa bahwa kueri memiliki hasil.
t31os

@ t31os Anda benar. Ini adalah kesalahanku. Sekarang dikoreksi kode tersebut. Terima kasih untuk identifikasi. :)
Mayeenul Islam

0

Dua loop umum dilakukan, tetapi sedikit overdosis.

Setiap posting atau halaman memberi Anda variabel-super $post. Pernah bertanya-tanya mengapa get_post_meta()pekerjaan Anda dengan sederhana $post->ID;)?

Jadi, sebelum Anda memulai WP_Query () yang mendapat posting Anda terdaftar, Anda dapat mengakses saat page- / post-data dengan $post->ID, $post->post_content, $post->guiddan sebagainya.

Dalam loop, variabel ini akan diisi oleh posting yang di-loop. Untuk menyimpannya nanti, Anda bisa membuat variabel baru

$temp_post = $post

// new WP_Query() + loop here

atau telepon

wp_reset_query ()

setelah daftar. Fungsi terakhir harus tetap dipanggil untuk memastikan bahwa data di bilah sisi Anda adalah hak untuk halaman / posting saat ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.