WordPress web sitenizde herhangi bir yere rastegele butonu ekleyebilirsiniz. Bu gösterdiğim yöntemi kendimde sitemde kullanıyorum güzel bir buton “rastgele yazı” ekleyebilirsiniz.
Eğer example.com/?mazlumu-getirin-bana gibi bir linkle WordPress sitenizdeki bir kategoriden rastgele yazı getirtmek istiyorsanız bu kodu functions.php’nize eklemeniz ve birkaç düzenleme yapmanız yeterli.
Rastgele Yazı Nasıl Yapılır?
/** * Eğer girilen adreste belirtilen GET parametresi varsa, kullanıcıyı rastgele bir yazıya gönder. * * @var $link: rastgele yazının getirileceği url'deki GET sorgusu. Varsayılan 'rastgele'dir. * Yani site.com/?rastgele şeklinde çalışır. * @var $catid: rastgele yazı getirilecek kategorinin ID'si. */ add_action( 'template_redirect', 'fincan' ); function fincan() { global $wpdb; $link = 'rastgele'; $catid = 1; $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'cat' => $catid, 'has_password' => false, 'posts_per_page' => '1', 'orderby' => 'rand' ); $sorgu = new WP_Query( $args ); if( isset( $_GET[$link] ) ) { if( $sorgu->have_posts()) { while( $sorgu->have_posts() ): $sorgu->the_post(); $random_id = get_the_ID(); endwhile; } wp_redirect( get_permalink( $random_id ) ); // Yazı ID'sinden yazı linkini bul ve yönlendir. exit; // bu fonksiyonun burdan bitmesi gerek. } }
$catid
ve
$link
değişkenlerini keyfinize göre değiştirin.
Çoğu kişi kategori ID’sini nerden bulacağını biliyordur ancak bilmeyenler Kategori ID Öğrenme makalesine bakabilirler.
Link değişkenini ihtiyacınıza/keyfinize göre düzenleyebilirsiniz. Şu haliyle bırakırsanız domain/?rastgele şeklinde çalışır.
Rastgele Yazı Örneği (flash oyun kategorisi) : http://1fincan.com/?oyunver
Denildiği gibi yapmama rağmen sürekli olarak son yazıyı gösteriyor. Sebebi ne olabilir?
$_GET[‘random_cat_id’] = XXX; genelde bu alanı doldurmadan geçiyorlar sende öylemi yaptın? Bir kontrol edebilirmisin ID’ni tekrardan?
Hayır, o bölümde bir sorun yok, kategori ID’sine +1 ekleyip yazdım. Slug olarak da rastgelevideo kullanıyorum. Neden böyle olduğunu bir türlü çözemedim.
Eğer bu kod işini görmediyse http://rooteto.com/wordpress/rastgele-yazilar buradaki yazımı incele istersen.
birden çok kategorideki konuyu çağırmak için ne yapabiliriz. Tüm kategorileri kasdetmiyorum. 10 tane kategorimiz olduğunu farzedelim, sadece 5 kategoriden çağırmak için ne yapabiliriz.
$_GET[‘random_cat_id’] = 2,3,4,5,6; yaptım beyaz sayfa çıktı.$_GET[‘random_cat_id’] = ‘2,3,4,5,6’; olarak yaptım. sadece bir konuya ait yazıları getirdi.
Merhaba, yazı epey eski. Bugün yazıda bir düzenleme yaparak birden fazla kategoriyi kullanarak rastgele yazı getirilebilecek hale getireceğim inşallah.
Beklemedeyim 🙂
Tekrar merhaba. Yazıyı güncelledim. Birden fazla kategori kullanmak için $args array’ında:
1) İster hardcode şekilde ‘cat’ değerini ‘3, 11, 83, 103’ şeklinde kategori ID’lerini sıralayarak
2) Ya da ‘cat’ yerine ‘category__in’ kullanıp $catid değişkenini array(3, 11, 83, 103) şeklinde ayarlayarak halledebilirsin 🙂
WP_Query’deki kategori bazlı diğer ayarlamalara buradan bakmanı tavsiye ederim. http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
Çok ama çok teşekkürler.. 😉