WordPress Rastgele Yazı & Konu Gösterimi (Eklentisiz)

Bu yazımızda rastgele yazı nasıl yapılır onu anlatacağım. Hiç bir eklenti kullanmadan bir tutam PHP kodu ile rastgele yazı adresi (URL) oluşturmak mümkün.

Aşağıdaki işlemleri yaptığınızda sizde aşağıda olduğu gibi bir adres oluşacak, site adresi /?rastgele şeklinde çalışan url çeşitli konulara rastgele gitmenize olanak sağlayacak.

https://codex.dincmedya.com.tr/?rastgele

Bu işlemi uygulamadan önce mutlaka dosyanızın yedeğini alın, özellikle fonksiyon dosyası üzerinde çalışma yapıyorsanız bu çok daha önemli, diğer dosyalara nazaran fonksiyon dosyaları çok daha hassas ve kolaylıkla sorun çıkarabiliyorlar, ah keşke yedek alsaydım demeyim.

Öncelikle yapmanız gereken fonksiyon (functions.php) dosyasında aşağıdaki kodu bulmanız, bu kod ilk satırda bulunur, ayrıca fonksiyon dosyanızın ismi farklı da olabilir örneğin theme-functions.php gibi.

<?php

Şimdi ise gerekli kodları bulduğumuz kodun hemen altına (2-3 satır boşluk bırakarak) ekliyoruz.

///////////////////////////////////////////////////////////////////
//////  Rastgele Yazı - Konu Gösterimi codex.dincmedya.com.tr  ///////
///////////////////////////////////////////////////////////////////
function yazi_yonlendir() {
global $wpdb;
$query = "SELECT ID FROM $wpdb->posts WHERE post_type = 'post' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";
if ( isset( $_GET['random_cat_id'] ) ) {
$random_cat_id = (int) $_GET['random_cat_id'];
$query = "SELECT DISTINCT ID FROM $wpdb->posts AS p INNER JOIN $wpdb->term_relationships AS tr ON (p.ID = tr.object_id AND tr.term_taxonomy_id = $random_cat_id) INNER JOIN  $wpdb->term_taxonomy AS tt ON(tr.term_taxonomy_id = tt.term_taxonomy_id AND taxonomy = 'category') WHERE post_type = 'post' AND post_password = '' AND     post_status = 'publish' ORDER BY RAND() LIMIT 1";
}
if ( isset( $_GET['random_post_type'] ) ) {
$post_type = preg_replace( '|[^a-z]|i', '', $_GET['random_post_type'] );
$query = "SELECT ID FROM $wpdb->posts WHERE post_type = '$post_type' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";
}
$random_id = $wpdb->get_var( $query );
wp_redirect( get_permalink( $random_id ) );
exit;
}
if ( isset( $_GET['rastgele'] ) ) {
add_action( 'template_redirect', 'yazi_yonlendir' );
}
///////////////////////////////////////////////////////////////////
//////  Rastgele Yazı - Konu Gösterimi codex.dincmedya.com.tr  ///////
///////////////////////////////////////////////////////////////////

İşlem bundan ibaret artık sizinde rastgele yazı getiren bir URL adresiniz oldu, bir sonraki yazımda ise Rastgele Yazı & Konu Ziyaretçilere Sunmak‘tan bahsedeceğim.

8 Yorum

  1. Cevap yaz

    Gerçekten sade anlayışlı bir dil kullanarak çok güzel wp ciler gönül rahatlıyıla kullanabilir. Böyle bir sitenin böyle alıntı yapmadan kodları paylaşarak kalitenizi belli ediyorsunuz.

  2. Cevap yaz

    Murat abi gittikçe ilerliyor görüyorum seni dahada ilerilere çıkıcaksın çok iyi wordpresse gönül verenler arasındasın :D

  3. Cevap yaz

    Bu yöntemi çok sık kullanırım Murat hocam. :) WordPress tasarım sattığım ve dattığım çalışmalar da bu yöntem her zaman mevcuttur. Zaten kullanıcılar genellikle WordPress sorunlarında hep bu işlemi soruyorlar. “bu/şu temada rastgele foksiyonu varmı?” :) Yararlı bir konu.

  4. Cevap yaz

    Çok faydalı bir konuya deginmişsiniz.Çunku bazı temalarda olmaya özellik.Çok aradığım olmuştu:)

  5. Cevap yaz

    Muhteşemsiniz hocam, pratik yollarla çok güzel çözümler üretebiliyorsunuz. İleride kullanacağım bir modifikasyon olacak…

  6. Cevap yaz

    Dinç abi güzel açıklamış ateyizlere gerek kalmadı…

  7. Cevap yaz

    Teşekkürler, bloguma ekledim :)

  8. Cevap yaz

    güzel anlatım abi teşekkürler

Bir Cevap Bırakın

Your email address will not be published. Required fields are marked *

You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>