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.
- wpartisan_set_no_found_rows: Bu fonksiyon, sorguda
no_found_rows
parametresinitrue
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. - wpartisan_set_found_posts: Bu fonksiyon, yalnızca ana sorgunun
is_singular()
olmadığı durumlardafound_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 ekleyin