WordPress Rastgele Yazıları Göster

Çoğu kişinin aradığı wordpress rastgele yazı özelliği tarafımca her türünden sitenize göre ayarlandı. İstediğiniz gibi kullanabileceksiniz yani sağ alanda, alt alanda rastgele yazı göstermek isteyebilirsiniz veya sitenizin herhangi bir yerinde rastgele yazıları listeleyebilirsiniz öncelikle linkli olarak rastgele yazıları nasıl göstericeksiniz onu göstericem sonra bendeki gibi sitenin herhangi bir yerinde tek olarak resimli rastgele yazı nasıl koyacaksınız, son olarakta rastgele yazı butonuna basıp, herhangi bir yazıya nasıl gideceksiniz bunu göstericem.

İlk olarak liste şeklinde rastgele yazıları nasıl göstericeksiniz bunu göstereyim.
Not: numberposts=5 olan rakamı değiştirdiğinizde okadar rastgele yazı gelir.

<ul>
<li><h2>Rastgele Yazılar</h2>
<ul>
<?php
$rastgele = get_posts('numberposts=5&orderby=rand');
foreach( $rastgele as $post ) :
?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</li>
</ul>

İkinci olarak sitenizin herhangi bir yerinde rastgele bir yazının resimli olarak nasıl geleceğini göstereyim (örnek bende var). Öncelikle sitemizde thumb özelliği olması gerek eğer yoksa aşağıda vereceğim işlemi uygulayacaksınız.

Not: Bunu sitesinde thumb özelliği olmayan arkadaşlar yapması gerek. Aşağıdaki kodu function.php sayfasının en altına yapıştırın.

<?php
function uo_get_thumbnail($postid=0, $size='thumbnail', $attributes='') {
if ($postid<1) $postid = get_the_ID();
if ($images = get_children(array(
'post_parent' => $postid,
'post_type' => 'attachment',
'numberposts' => 1,
'post_mime_type' => 'image', )))
foreach($images as $image) {
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
?>
<img src="<?php echo $thumbnail[0]; ?>" <?php echo $attributes; ?>/>
<?php
}
else {
echo '<img src=' . get_bloginfo ( 'stylesheet_directory' );
echo '/images/resim-yok.gif>';
}
}
?>

Yukarıdaki kodu functions.php ye koyduktan sonra aşağıdaki kodu rastgele yazının görünmesi gereken yere koyucaz. Kodu ilk olarak burada göstericem fakat sonraki adımlarda işe yarayak bilginiz olsun.

<?php uo_get_thumbnail($size, 'medium'); ?>

Resim küçük veya büyük geldiyse “medium” yazan yere small, large, full şeklinde değiştirebilirsiniz.

Tamam yukarıdaki fonksiyonu tanımladıktan sonra bu olayı resimli olarak istediğimiz sayfada veya yerde nasıl gösteririz ona geçiyorum.

Bendeki gibi birşey istiyorsanız.

<div class="bg">
<div class="rastgele">
<?php
$rastgele = get_posts('numberposts=1&orderby=rand');
foreach( $rastgele as $post ) :
?>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php uo_get_thumbnail($size, 'medium'); ?>
<h4><?php the_title(); ?></h4>
</a>
<?php endforeach; ?>
</div>
</div>

Yukarıdaki kodu istediğiniz alana koyabilirsiniz.

Css’e gelecek olursak.

.bg {background: none repeat scroll 0 0 #F7F7F7;border-radius: 10px 10px 10px 10px;color: #666666;float: right;height: 90px;margin: 0;padding: 10px 0;width: 220px;}
.rastgele {width:200px; height:90px; overflow:hidden; margin:0 auto; position:relative}
.rastgele img {margin: 0;width: 200px;}
.rastgele h4 {background: url("images/fon.png") repeat scroll 0 0 transparent;bottom: 0;font-size: 11px;font-weight: bold;height: 27px;padding: 6px 0;position: absolute;text-align: center;width: 200px;}

Yukarıda verdiğim css işinizi görecektir (images/fon.png) yi benden çekebilirsiniz.

Son olarakta menüye Rastgele butonu koyup, rastgele bir sayfaya gitmesi nasıl olur onu göstereyim. Aşağıda verdiğim kodu yine functions.php nin en altına koyuyoruz.

<?php
function yazi_rastgele() {
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_rastgele' );
}
?>

Yukarıdaki işlemi tamamladıktan sonra aşağıdaki linki sitenizde uygun biryere sokuşturun 🙂

http://www.siteadiniz.com/?rastgele

haydi kolay gelsin sorunuz olduğunda çekinmeden sorun.