Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Kupası
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

WordPress’te Çoklu Döngülerle Yinelenen Yazı Gösterimi Nasıl Önlenir

Farklı gönderi kümelerini görüntülemek için birden fazla WordPress sorgusu kullanıyorsanız, yinelenen içerikle karşılaşabilirsiniz. Bunun nedeni, bazı gönderilerin birden fazla döngüyle eşleşmesi ve iki kez görünmesidir.

WordPress, birden fazla döngüde yinelenen gönderileri önlemek için yerleşik bir seçenekle birlikte gelmez. Ancak, farklı WordPress sitelerini yönettiğimiz 15 yılı aşkın deneyimimizde, bu sorunu nasıl önleyebileceğimizi öğrendik. Bu nedenle, sitenize ekleyebileceğiniz ve farklı döngülerde yinelenen gönderilerin gösterilmesini önleyebileceğiniz özel bir kod parçacığı oluşturduk.

Bu makalede, WordPress’te çoklu döngülerle yinelenen yazı gösterimini nasıl kolayca önleyebileceğinizi göstereceğiz.

Avoding duplicate posts when working with multiple WordPress loops

Birden Fazla WordPress Döngüsünde Yinelenen Yazılar Nasıl Görünür?

Özel bir WordPress teması veya özel bir sayfa şablonu oluştururken bazen birden fazla WordPress döngüsü kullanmanız gerekebilir.

Örneğin, son gönder ilerinizi sitenizin en popüler gönderilerinin yanında göstermek isteyebilirsiniz. Her kategorideki tüm gönderileri göstererek okuyucuların ilginç içerikler bulmasına da yardımcı olabilirsiniz.

Tüm bu örneklerde, tek bir yazı birden fazla döngü için kriterlerle eşleşebilir. Bu durumda WordPress yinelenen içerik görüntüleyecektir.

Bu yinelenen içerik sitenizin dağınık ve profesyonel olmayan görünmesine neden olabilir. Ayrıca değer katmadan ekranda yer kaplar.

Her döngü için dinamik olarak gönderi oluşturduğunuzdan, yinelenen bir gönderinin birden fazla döngüde görünüp görünmeyeceğini manuel olarak tahmin edemezsiniz.

Bununla birlikte, WordPress’te çoklu döngülerle uğraşırken yinelenen gönderileri önlemenin kolay bir yoluna bakalım.

Çoklu WordPress Döngülerinde Yinelenen Yazıları Önleme

Bu kılavuzda, yinelenen yazı hatasına neden olan bazı örnek WordPress kodlarını gösterecek ve ardından sorunu çözen bir kod parçacığını paylaşacağız.

Bir WordPress alt teması veya özel şablon oluştururken kodunuz tamamen farklı olabilir. Ancak, kod parçacığımızı bir başlangıç noktası olarak kullanabilir ve ardından kendi web sitenize uyacak şekilde değiştirebilirsiniz.

İlk olarak, bir yinelenen gönderi sorunu oluşturalım. Aşağıdaki örnek kodda ‘seyahat’ kategorisindeki tüm yazıları ve ‘haberler’ kategorisindeki tüm yazıları mükerrer yazılardan kaçınarak görüntülüyoruz:

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3 
));
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'posts_per_page'  =>  3
 
) );
 
// The Loop
if ( $second_query->have_posts() ) {
 
echo '<ul>';
while ( $second_query->have_posts() ) {
 
$second_query->the_post();
echo '<li>'; 
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Gördüğünüz gibi, bu kod her iki sorguda da yinelenen gönderileri kontrol etmiyor.

Bir gönderi hem ‘haberler’ hem de ‘seyahat’ kategorisine aitse, aşağıdaki resimde görebileceğiniz gibi iki kez görünecektir.

How to avoid duplicate post display with multiple loops in WordPress

Bu sorunu çözelim.

WordPress blogunuzda yinelenen gönderilerden kaçınmak için, ilk döngüde görüntülenen tüm gönderilerle ilgili verileri geçici olarak saklamanız gerekir.

Bu bilgiye sahip olduğunuzda, ikinci döngüde yinelenen gönderilerin görünmesini engellemek için ikinci sorguyu değiştirebilirsiniz:

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3
) );
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
         
// Store Post IDs in an Array to reuse later
$exclude[] = $post->ID; 
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'post__not_in'  =>  $exclude, // Tell WordPress to Exclude these posts
'posts_per_page'  =>  3
 
) );
 
// The Loop
if ( $second_query->have_posts() ) {
 
echo '<ul>';
while ( $second_query->have_posts() ) {
 
$second_query->the_post();
echo '<li>'; 
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Yukarıdaki kodda, Post ID’lerini $exclude adlı bir dizide saklıyoruz. Bundan sonra, ilk döngüde görüntülenen gönderileri hariç tutacak olan ikinci sorguya post__not_in argümanını ekliyoruz.

Sitenize kod parçacıkları eklemeye aşina değilseniz, WPCode kullanmak daha kolay bir yoldur. Sitenizi bozma riski olmadan özel kod eklemenize yardımcı olan WordPress için en iyi kod parçacığı eklentisidir.

İlk olarak, WPCode eklentisini yüklemeniz ve etkinleştirmeniz gerekir. Yardıma ihtiyacınız varsa, lütfen bir WordPress eklentisinin nasıl kurulacağına ilişkin kılavuzumuza bakın.

Etkinleştirmenin ardından, WordPress kontrol panelinden Kod Parçacıkları + Parçacık Ekle’ye gidebilir ve ardından ‘Özel Kodunuzu Ekleyin (Yeni Parçacık)’ seçeneğine tıklayabilirsiniz.

Add a new custom code snippet in WPCode

Bundan sonra, özel kodu Kod Önizleme alanına yapıştırabilir ve üst kısma bir başlık girebilirsiniz.

Ayrıca açılır menüye tıklayarak ‘Kod Türü’nü PHP Snippet olarak seçmeniz gerekir.

Enter custom code snippet

Kodu girdikten sonra, Ekleme bölümünü seçmek için aşağı kaydırmanız yeterlidir.

Burada, varsayılan ‘Otomatik Ekle’ ayarını kullanabilir ve eklentinin kodu sitenize otomatik olarak eklemesine izin verebilirsiniz.

Insertion methods for snippets in WPCode

İşiniz bittiğinde, parçacığı kaydedin ve etkinleştirin.

Daha fazla ayrıntı için lütfen WordPress’te özel kod ekleme hakkındaki kılavuzumuza bakın.

Şimdi, WordPress web sitenizi ziyaret ederseniz, yinelenen gönderilerin kaybolduğunu göreceksiniz.

Removing duplicate posts when using multiple posts in WordPress

Bu makalenin WordPress’te çoklu döngülerle yinelenen yazı gösterimini nasıl önleyeceğinizi öğrenmenize yardımcı olduğunu umuyoruz. WordPress döngüsündeki herhangi bir sayıda gönderiyi nasıl devre dışı bırakacağınız ve WordPresste yapışkan gönderileri nasıl oluşturacağınız hakkındaki kılavuzumuzu da görmek isteyebilirsiniz.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Açıklama: İçeriğimiz okuyucu desteklidir. Bu, bazı bağlantılarımıza tıklarsanız komisyon kazanabileceğimiz anlamına gelir. WPBeginner'ın nasıl finanse edildiğini, neden önemli olduğunu ve nasıl destek olabileceğinizi görün. İşte editoryal sürecimiz.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Ultimate WordPress Araç Kiti

Araç setimize ÜCRETSİZ erişim sağlayın - her profesyonelin sahip olması gereken WordPress ile ilgili ürün ve kaynaklardan oluşan bir koleksiyon!

Reader Interactions

15 yorumBir Cevap Bırakın

  1. Nick J

    Is there a plugin that does this?

  2. Satriyo

    Could someone tell me how to do this? I’m really new to this and need a help, please give me a clear example with the post ID, how to store it? Let’s say, mine is 1527.

  3. Gaurav

    I’m running 2 loops before loops of a specific category in which I would like to avoid duplicates. So how do a store ID’s in the array from first two loops?

  4. Joe

    Just what I was looking for – thank you!

  5. Guilherme Alves

    Thank you soo much :))) This helps me alot!
    Save my day <3

  6. Julie

    AWESOME!! Thank you so much! And thank you SERGEYVLASOV for that last comment– Worked like a charm for my multiple loops. Hooray!! :)

  7. Pirooz

    This method just works fine until both of 2 loops located in one file.
    but when I put the first loop in the header.php and another one in the index.php,
    in_array($post->ID, $do_nit_duplicate) returns null.
    what can I do?

  8. warren

    Good afternoon all,

    will this work for my current issue with double display of posts on site? it literally displays a copy under the posts and the 1, 2, -> button…

    the site is I have deactivated re-activated plugins i am literally going nuts.

  9. agus

    can you help me?
    I have proble with duplicate category in my site

    please
    #thanks

  10. Gabriel

    Before iterating over the default loop shouldn’t we use wp_reset_postdata(); ?

  11. Greg

    @sergeyvlasov – Thanks that worked for me

    tho i changed

    $do_nit_duplicate to $do_not_duplicate

    ;)

  12. sergeyvlasov

    I think there is a flaw in this algorithm. It can spot no more than 1(one) duplication. So the magic line would look like
     
    $do_not_duplicate[] = $post->ID
     
    and then used as
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Bir Cevap Bırakın

Yorum bırakmayı seçtiğiniz için teşekkür ederiz. Lütfen tüm yorumların yorum poli̇ti̇kasi uyarınca denetlendiğini ve e-posta adresinizin yayımlanmayacağını unutmayın. Ad alanında anahtar kelime KULLANMAYIN. Kişisel ve anlamlı bir sohbet edelim.