WordPress Sorgu İyileştirmeleriyle Performansı Artırın

WordPress Sorgu İyileştirmeleriyle Performansı Artırın

WordPress’de Sorgu Performansını Artırma

Bu kod parçacığı, Wordpress sorgularında found_posts sayısını optimize ederek, özellikle büyük veri setlerinde performansı artırmaya yardımcı olur. Aşağıdaki iki fonksiyon, sorgu sırasında toplam gönderi sayısını güncelleyerek ve no_found_rows parametresini ayarlayarak gereksiz veritabanı sorgularını azaltır.

  1. wpartisan_set_no_found_rows: Bu fonksiyon, sorguda no_found_rows parametresini true olarak ayarlayarak, toplam gönderi sayısını sorgulamak yerine yalnızca mevcut sayfada gösterilecek gönderileri alır. Bu, sorgu süresini önemli ölçüde kısaltabilir.
  2. wpartisan_set_found_posts: Bu fonksiyon, yalnızca ana sorgunun is_singular() olmadığı durumlarda found_posts değerini ayarlar. Bu, performansı artırmak için daha hızlı bir yöntemle toplam gönderi sayısını hesaplar ve toplam sayfa sayısını günceller.

Bu kodu temanızın functions.php dosyasına ekleyerek, WordPress sitenizin performansını artırabilir ve sorgu sürelerini azaltabilirsiniz.

if (!function_exists(‘wpartisan_set_no_found_rows’)) :
    function wpartisan_set_no_found_rows(\WP_Query $wp_query)
    {
        $wp_query->set(‘no_found_rows’, true);
    }
endif;
add_filter(‘pre_get_posts’, ‘wpartisan_set_no_found_rows’, 10, 1);
if (!function_exists(‘wpartisan_set_found_posts’)) :
    function wpartisan_set_found_posts($clauses, \WP_Query $wp_query)
    {
        if ($wp_query->is_singular()) {
            return $clauses;
        }
        global $wpdb;
        $where = isset($clauses[‘where’]) ? $clauses[‘where’] : ”;
        $join = isset($clauses[‘join’]) ? $clauses[‘join’] : ”;
        $distinct = isset($clauses[‘distinct’]) ? $clauses[‘distinct’] : ”;
        $wp_query->found_posts = $wpdb->get_var(“SELECT $distinct COUNT(*) FROM {$wpdb->posts} $join WHERE 1=1 $where”);
        $posts_per_page = (!empty($wp_query->query_vars[‘posts_per_page’]) ? absint($wp_query->query_vars[‘posts_per_page’]) : absint(get_option(‘posts_per_page’)));
        $wp_query->max_num_pages = ceil($wp_query->found_posts / $posts_per_page);
        return $clauses;
    }
endif;
add_filter(‘posts_clauses’, ‘wpartisan_set_found_posts’, 10, 2);

Yorum yok

  • Henüz yorum yapılmadı.

Yorum ekleyin

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir