WordPress te Plugin kullanmadan related posts uygulayalım




Eğer bir web sayfanız varsa Related post (ilgili diğer konular) özelliğini kullanmanız hem SEO olarak iyi puan lamanızı sağlayacak hem okuyucunuzun sayfanızda kalma süresini arttıracak hemde konu

ile alakalı diğer konuları okuyucuya sunmanıza yardımcı olacaktır , Bu konuda pluginler yokmudur elbette var , mesela benim kullandıklarımdan ikişi :

1. Yet Another Related Posts Plugin Burada , Plugin görevini layıkı ile yerine getiriyor , coderi son versionlarına cache özelliği de eklemiş gel gelelim eğer binlerce başlığınız varsa işte burada sıkıntı başlıyor yüklenmelerde takılmalar , hostunuzda High Cpu usağe uyarıları almaya başlıyorsunuz bunun yegane sebebi pluginin sistem kaynağı kullanımının yüksek oluşu , gerçi coderi bunu da azaltmaya çalışıyormuş , pluginin diğer bir kötü tarafı databankınızda kalıntı bırakması (bgende 22 bin adet kayıt bırakmıştı) , veritabanından iki tık ile sildim gerçi ama neden benden habersiz tüğm sorgu kayıtları orada dursunki , eğer onbinlerle ifade edilen başlık varsa veritabanı boyutunuz ekstradan onlarca Mb büyüyecektir

2. Contextual Related Posts Burada Kurulumu ve kullanımı oldukça kolay olan bu plugin diğer kurup denediğim ve düzgün çalışan pluginlerden biri , hoş gerçi diğer denediklerimin hiçbiri çalışmadı nedense , Plugin wp_posts tablo boyutunu birhayli arttırıyor mesela 12 MB olan bu tablomun boyutu 25 MB olmuştu açıkçası uninstall ederken bu kalıntılarda bir üstteki plugin gibi kalacak diye çekinmiştim çünkü manule temizlemek zorunda kalmaktan nefret ediyorum fakat uninstall sonrası hiçbir iz kalmadığını gördüm coderi oldukça temiz iş çıkarmış gel gelelim üstteki plugin ile maximum 47 olan sorgu sayım bununla 54 lerde geziniyordu bu da canımı sıktı neden aynı işi daha az sorgu ile yapmıyordu .

Tüm bunlardan sonra bu işi Plugin kullanmadan yapmaya karar verdim ve gerekli kodu da nette yaptığım araştırma ve denemelerden sonra buldum , kodun iki farklı çeşidi vardı
1. ALL COMMON tags temelli
2. ALL COMMON categories temelli
Birincisini denediğimde bende çalışmadığını gördüm , sanıyorum ki bende Taglar sayfa yüklenmesi sırasında otomatik oluıştuğundan sorun teşkil etti , fakat ikincisi çalıştı hatta şu an sayfada o kodun çıktısını görüyorsunuz , burada kafama takılan şey ise sayfanın her yüklenişinde farklı alakalı başlıkların gösterilmesi bu da veritabanına ek yük getirecektir diye düşünüyorum bakalım biraz gözlemledikten sonra gerçek ortaya çıkar , gelelim koda ve nasıl kullandığıma kod aşağıda:

<?php
/********** CODE BLOCK2 (BASED ON ALL COMMON CATEGORIES) *********
* @Author: Boutros AbiChedid
* @Credit: http://bacsoftwareconsulting.com/blog/
* @Date:   May 24, 2011
* Tested on WordPress version 3.1.2
* @Description: Code that shows other "Related Posts" to a post
* based on ALL COMMON categories.
*******************************************************************/
 
//Retrieve the list of categories for a post.
$categories = get_the_category($post->ID);
 
//If categories exist for the post.
if ($categories) {
    $category_ids = array();
 
    //retrieve the category_ids for the post.
    foreach($categories as $each_category)
        $category_ids[] = $each_category->term_id;
 
    //WP_Query arguments.
    $args = array(
        'category__in' => $category_ids, //An array of category IDs to be included.
        'post__not_in' => array($post->ID), //An array of post IDs to be excluded from the results.
        'orderby'=> 'rand', //Lists Related posts Randomly. *** MODIFY IF YOU LIKE ***
        'showposts' => 10, //*** MODIFY TO WHAT YOU LIKE.***  Number of related posts to show.
        //'caller_get_posts' => 1 //*** USE THIS IF YOU ARE RUNNING WordPress Version < 3.1 ***
        'ignore_sticky_posts' => 1 //*** USE THIS for WordPress Version >= 3.1 ***
    );
 
//WP_Query is a class defined in wp-includes/query.php
$query = new WP_Query($args);
 
    //If there are related posts.
    if( $query->have_posts() ) {
        echo '<div class="related">';
        echo '<h3>Related Post(s):</h3><ol>'; //*** MODIFY TITLE IF YOU LIKE ***
 
        //loop through the posts and list each until done.
        while ($query->have_posts()) {
            $query->the_post();
        ?>
            <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to: <?php the_title_attribute(); ?>">
            <?php the_title(); ?></a></li>
        <?php
        }
        echo '</ol>';
        echo '</div>';
    }
}
//Destroy the previous query. This is a MUST, otherwise you will get the WRONG comments
//(comments assigned to the wrong post), and sometimes categories and tags are for the wrong post.
wp_reset_query();
?>

Üstteki kodu wp-content\themes\tema isminiz\single.php de kendimce uygun bulduğum bir yerde kullandım (her temada değişecektir) fakat kullanırken kodun uzun olması sebebi ile en mantıklı yolun kodu tema klasörüne .php şeklinde atıp single.php içinden bunun çağrılması olduğunu düşündüğümden kodu tema klasörüme rp.php şeklinde attım ve single.php içinde kendimce uygun bir yere aşağıdaki kodu ekledim

<!--?php include 'rp.php';  // Works. ?-->

Bu çağırma yöntemi benim çokça başvurduğum bir sistemdir kaynak



Yorum Ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

CAPTCHA