WordPress’te Rastgele Yazı Gösterme Linki Oluşturma

May 3, 2020 Bilgi kategorisinde yayınlandı.

Bu sitenin anasayfasında da görebileceğiniz üzere eski yazıların ziyaretçilere gösterilmesini sağlayacak rastgele yazı linki oluşturmak mümkün. Bu sayede arka sayfalarda kalmış yazıların tekrar gün yüzüne çıkmasını sağlayabileceğiniz gibi şansını denemek isteyenlere de fırsat verebilirsiniz. Örneğin bir film tanıtım siteniz vardır ve ziyaretçi izleyecek film arıyordur. Bu kod sayesinde şansını deneyerek rastgele bir film bulabilecektir.

Öncelikle temanızın functions.php dosyasına şu kodu ekleyiniz:

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-yazi'] ) ) {
add_action( 'template_redirect', 'yazi_yonlendir' );
}

Şimdi yapmanız gereken rastgele yazı linkinin çıkacağı tema dosyasına(ya da yazı içine) bu linki koymak:

https://www.example.com/?rastgele-yazi

“Rastgele-yazi” yerine farklı bir ifade kullanmak isterseniz, ilk koddaki rastgele-yazi yazısını değiştirebilirsiniz. Bunu yaparsanız, linki değiştirmeyi de unutmayın.

Eğer belirli bir kategoriden rastgele yazılara link vermek istiyorsanız, functions.php dosyasındaki kodu şu şekilde değiştirin:

function kategoriadiniz() {
global $wpdb;

//$query = "SELECT ID FROM $wpdb->posts WHERE post_type = 'post' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";

$_GET['random_cat_id'] = "8";
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['film'] ) )
add_action( 'template_redirect', 'kategoriadiniz' );

Rastgele yazıların geleceği kategori ID’nizi

$_GET['random_cat_id'] = 8; 

satırındaki 8 yerine yamalısınız.

Sonuçta kullanacağınız link kodu ise:

https://www.example.com/?film

Film yerine farklı bir sözcük kullanmak isterseniz,

if ( isset( $_GET['film'] ) ) 

satırındaki film sözcüğünü değiştirebilirsiniz.

Eğer birden çok kategoriden rastgele yazıya link vermek istiyorsanız, $_GET[‘random_cat_id’] = “8”; yazan yerdeki 8 rakamını, kategorilerin ID’leri ile değiştirebilirsiniz. Aralarına virgül koymalısınız. Örneğin:

$_GET['random_cat_id'] = "1,8,12";

WordPress rastgele yazı linkini bu şekilde oluşturmak mümkün. Yardıma ihtiyaç duyarsanız yorum olarak yazınız.

Yorum Yapabilirsiniz

Yorumunuz yönetici onayından sonra görülebilecektir.