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.