Sayfa içeriğini bir sayfa şablonunda nasıl görüntüleyebilirim?


13

WordPress sitemde, [kullanarak WP_Query()] özel bir sorgu içeren özel bir sayfa şablonu hazırladım . Bu sorgu ile, belirli bir kategorinin gönderilerini mükemmel bir şekilde alabilirim. Ancak sorgulanan gönderilerle birlikte sayfa içeriğini göstermek istiyorum.

Şey şöyle olacak:
---------------------------

Sayfa Başlığı

sayfa içeriği

Sorgulanan Yazı Başlığı

sorgulanan içerik içeriği
---------------------------

  • Ne yapabilirim?

2
Sorun nedir? Bu bir sayfa şablonu olduğundan sayfa içeriğine erişebilirsiniz. Başka bir ayrı sorgu aracılığıyla, örneğin belirli bir gönderiye erişir ve böylece içeriğini çıktısı alabilirsiniz. Yani?
tfrommen

Oy vermeden önce lütfen sabırlı olun. Bunun için mücadele ediyorum ve sonra çözümü buldum. Burada mantığı başkalarıyla paylaşmaya çalıştım - bence bu, gerçeği aradığım şekilde açıklığa kavuşturacak. Umarım Soru-Cevap size açıktır.
Mayeenul Islam

Öncelikle, did not sorunuzu downvote. İkincisi, bilginizi bizimle paylaştığınız için teşekkürler. Bunu yapmak için kesinlikle haklısın. Sanırım, sorun şu / bu sorunun deneyimli WP kullanıcıları / geliştiricileri için çözülmesi o kadar zor olmadığı ve aynı zamanda soruyu tek başına göndermiş olmanızdı. En başından itibaren soru sormak ve yanıtlamak istiyorsanız, yanıtınızı / çözümünüzü doğrudan sorunuzu yazdığınız sayfaya ekleyin. Sorunuzu Gönderin düğmesinin altında Kendi sorunuzu cevaplayın onay kutusu vardır . Tekrar teşekkürler.
tfrommen

wp_reset_postdata()kurtarma için. Her özel sorgudan sonra yapılmalıdır .
kaiser

Yanıtlar:


21

İki döngü kullanıyorum. İlk döngü sayfa içeriğini ve ikinci döngü sorgulanan gönderi içeriğini göstermektir. Gerektiğinde kodlara yorum yaptım. Deckster0'ın WordPress desteğinde söylediği gibi döngülere vurgu yaptım , the_content()sadece bir WordPress Döngüsü içinde çalışıyor. Bu kodu kendi şablonuma yerleştiriyorum:

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

Bu ikinci sorgu içeride olmamalıdır, if( have_posts() )çünkü bu ifade her zaman doğru olacaktır. Sorgunun sonuçları olup olmadığını kontrol etmek istiyorsanız if( $my_query->have_posts() ), $my_query = new WP_Query( 'cat=1' );ve args satırlarından sonra çağırmalısınız .
t31os

@ t31os haklısın. Bu benim hatam. Şimdi kodu böyle düzeltildi. Kimlik için teşekkürler. :)
Mayeenul Islam

0

Bunu yapmak için iki döngü yaygındır, ancak biraz aşırı dozda.

Her gönderi veya sayfa size süper değişkeni verir $post. Hiç neden get_post_meta()basit $post->ID;) ile çalıştığını merak ettiniz mi?

Eğer listelenen mesajları alır WP_Query () başlamadan önce Yani, mevcut sayfası- / sonrası verilerine erişebilir $post->ID, $post->post_content, $post->guidvb.

Döngüde, bu değişken ilmekli yazı tarafından doldurulur. Daha sonra kullanmak üzere kaydetmek için yeni bir değişken oluşturabilirsiniz

$temp_post = $post

// new WP_Query() + loop here

veya ara

wp_reset_query ()

listelemeden sonra. Kenar çubuğunuzdaki verilerin geçerli sayfa / gönderi için doğru olduğundan emin olmak için yine de son işlev çağrılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.