{"id":16674,"date":"2026-10-09T17:39:29","date_gmt":"2026-10-09T14:39:29","guid":{"rendered":"https:\/\/www.ihs.com.tr\/blog\/?p=16674"},"modified":"2026-10-09T17:39:29","modified_gmt":"2026-10-09T14:39:29","slug":"wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati","status":"publish","type":"post","link":"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/","title":{"rendered":"&#8220;WP_Query&#8221; S\u0131n\u0131f\u0131n\u0131n Derinlikleri: Karma\u015f\u0131k Sorgular Olu\u015fturma Sanat\u0131"},"content":{"rendered":"<p>WordPress, i\u00e7erik y\u00f6netim sistemleri aras\u0131nda esnekli\u011fi ve g\u00fcc\u00fcyle \u00f6ne \u00e7\u0131kar. Bu g\u00fcc\u00fcn temel ta\u015flar\u0131ndan biri de veritaban\u0131ndaki i\u00e7erikleri hassas bir \u015fekilde \u00e7ekip ekrana getirmemizi sa\u011flayan `WP_Query` s\u0131n\u0131f\u0131d\u0131r. \u0130ster basit bir blog yaz\u0131s\u0131 listesi, ister karma\u015f\u0131k filtreleme se\u00e7eneklerine sahip bir e-ticaret \u00fcr\u00fcn sayfas\u0131 olsun, `WP_Query` geli\u015ftiricilere WordPress veritaban\u0131yla dinamik ve kontroll\u00fc bir \u015fekilde ileti\u015fim kurma imkan\u0131 tan\u0131r. Bu makalede, `WP_Query`&#8217;nin temel anatomisinden ba\u015flayarak, en karma\u015f\u0131k sorgular\u0131 bile nas\u0131l kolayca olu\u015fturabilece\u011finizi, performans optimizasyonlar\u0131n\u0131 ve en iyi kullan\u0131m senaryolar\u0131n\u0131 derinlemesine inceleyece\u011fiz. Bu sayede, WordPress projelerinizde veri \u00e7ekme i\u015flemlerine tam anlam\u0131yla hakim olacaks\u0131n\u0131z.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0130\u00e7erik Tablosu<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6ac94279a7602\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\" id=\"ez-toc-cssicon-toggle-item-6ac94279a7602\" aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#WP-Querye-Giris-ve-Temel-Kavramlar\" >WP_Query&#8217;e Giri\u015f ve Temel Kavramlar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#WP-Query-Sinifi-Nedir-ve-Neden-Onemlidir\" >WP_Query S\u0131n\u0131f\u0131 Nedir ve Neden \u00d6nemlidir?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#WordPress-Dongusu-The-Loop-ile-Iliskisi\" >WordPress D\u00f6ng\u00fcs\u00fc (The Loop) ile \u0130li\u015fkisi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Temel-Bir-WP-Query-Sorgusunun-Anatomisi\" >Temel Bir WP_Query Sorgusunun Anatomisi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#query-posts-ve-get-posts-ile-Farklari-ve-Neden-WP-Query-Tercih-Edilmeli\" >`query_posts()` ve `get_posts()` ile Farklar\u0131 ve Neden WP_Query Tercih Edilmeli?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Temel-Sorgu-Parametreleri-ile-Filtreleme\" >Temel Sorgu Parametreleri ile Filtreleme<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Yazi-Tipi-Parametreleri-post-type-post-status\" >Yaz\u0131 Tipi Parametreleri (`post_type`, `post_status`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Yazar-Parametreleri-author-author-in-author-not-in\" >Yazar Parametreleri (`author`, `author__in`, `author__not_in`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Kategori-ve-Etiket-Parametreleri-category-in-tag-and\" >Kategori ve Etiket Parametreleri (`category__in`, `tag__and`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Sayfalama-Parametreleri-posts-per-page-paged-offset\" >Sayfalama Parametreleri (`posts_per_page`, `paged`, `offset`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Siralama-Parametreleri-orderby-order\" >S\u0131ralama Parametreleri (`orderby`, `order`)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Karmasik-Taksonomi-Sorgulari-Olusturma-tax-query\" >Karma\u015f\u0131k Taksonomi Sorgular\u0131 Olu\u015fturma: `tax_query`<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#tax-query-Dizisine-Giris-ve-Temel-Yapisi\" >`tax_query` Dizisine Giri\u015f ve Temel Yap\u0131s\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Tek-Bir-Taksonomiye-Gore-Filtreleme\" >Tek Bir Taksonomiye G\u00f6re Filtreleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Birden-Fazla-Taksonomi-Kosulunu-Birlestirme\" >Birden Fazla Taksonomi Ko\u015fulunu Birle\u015ftirme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#relation-Parametresi-AND-ve-OR-Kullanimi\" >`relation` Parametresi: `AND` ve `OR` Kullan\u0131m\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#operator-Parametresi-ile-Gelismis-Eslestirme-IN-NOT-IN-EXISTS\" >`operator` Parametresi ile Geli\u015fmi\u015f E\u015fle\u015ftirme (`IN`, `NOT IN`, `EXISTS`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Ic-Ice-Taksonomi-Sorgulari-ile-Detayli-Filtreleme\" >\u0130\u00e7 \u0130\u00e7e Taksonomi Sorgular\u0131 ile Detayl\u0131 Filtreleme<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Gelismis-Meta-Veri-Sorgulari-meta-query\" >Geli\u015fmi\u015f Meta Veri Sorgular\u0131: `meta_query`<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#meta-query-Dizisi-ve-Temel-Bilesenleri-key-value-compare\" >`meta_query` Dizisi ve Temel Bile\u015fenleri (`key`, `value`, `compare`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Sayisal-Degerlere-Gore-Karsilastirma-compare-%3E\" >Say\u0131sal De\u011ferlere G\u00f6re Kar\u015f\u0131la\u015ft\u0131rma (`compare`: `>`, `<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Metin-Tabanli-Karsilastirmalar-compare-LIKE-NOT-LIKE\" >Metin Tabanl\u0131 Kar\u015f\u0131la\u015ft\u0131rmalar (`compare`: `LIKE`, `NOT LIKE`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#type-Parametresi-ile-Veri-Tipini-Belirtme-NUMERIC-DATE-CHAR\" >`type` Parametresi ile Veri Tipini Belirtme (`NUMERIC`, `DATE`, `CHAR`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#relation-Kullanarak-Coklu-Meta-Kosullarini-Yonetme\" >`relation` Kullanarak \u00c7oklu Meta Ko\u015fullar\u0131n\u0131 Y\u00f6netme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Var-Olan-EXISTS-veya-Olmayan-NOT-EXISTS-Meta-Alanlarina-Gore-Sorgulama\" >Var Olan (`EXISTS`) veya Olmayan (`NOT EXISTS`) Meta Alanlar\u0131na G\u00f6re Sorgulama<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Zaman-ve-Tarih-Eksenli-Sorgular-date-query\" >Zaman ve Tarih Eksenli Sorgular: `date_query`<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#date-query-Dizisinin-Kullanimi\" >`date_query` Dizisinin Kullan\u0131m\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Yil-Ay-ve-Gune-Gore-Hassas-Filtreleme\" >Y\u0131l, Ay ve G\u00fcne G\u00f6re Hassas Filtreleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Belirli-Tarih-Araliklari-Arasinda-Sorgulama-after-before\" >Belirli Tarih Aral\u0131klar\u0131 Aras\u0131nda Sorgulama (`after`, `before`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Haftanin-Gunune-veya-Yilin-Haftasina-Gore-Yazilari-Getirme\" >Haftan\u0131n G\u00fcn\u00fcne veya Y\u0131l\u0131n Haftas\u0131na G\u00f6re Yaz\u0131lar\u0131 Getirme<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Performans-Optimizasyonu-ve-En-Iyi-Uygulamalar\" >Performans Optimizasyonu ve En \u0130yi Uygulamalar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Sorgu-Performansini-Etkileyen-Faktorler\" >Sorgu Performans\u0131n\u0131 Etkileyen Fakt\u00f6rler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#no-found-rows-Sayfalama-Olmadiginda-Sorguyu-Hizlandirma\" >`no_found_rows`: Sayfalama Olmad\u0131\u011f\u0131nda Sorguyu H\u0131zland\u0131rma<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#update-post-term-cache-ve-update-post-meta-cache-Gereksiz-Veritabani-Yukunu-Engelleme\" >`update_post_term_cache` ve `update_post_meta_cache`: Gereksiz Veritaban\u0131 Y\u00fck\u00fcn\u00fc Engelleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#fields-Sadece-Gerekli-Veri-Alanlarini-Cekme-ids-id%3Eparent\" >`fields`: Sadece Gerekli Veri Alanlar\u0131n\u0131 \u00c7ekme (`ids`, `id=>parent`)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Gecici-Bellek-Caching-Stratejileri-ve-WP-Query-Entegrasyonu\" >Ge\u00e7ici Bellek (Caching) Stratejileri ve WP_Query Entegrasyonu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Ana-Sorguyu-Degistirme-Sanati-pre-get-posts\" >Ana Sorguyu De\u011fi\u015ftirme Sanat\u0131: `pre_get_posts`<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#pre-get-posts-Eylemi-Nedir-ve-Ne-Zaman-Kullanilmalidir\" >`pre_get_posts` Eylemi Nedir ve Ne Zaman Kullan\u0131lmal\u0131d\u0131r?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Arsiv-Sayfalarini-ve-Arama-Sonuclarini-Kosullu-Olarak-Ozellestirme\" >Ar\u015fiv Sayfalar\u0131n\u0131 ve Arama Sonu\u00e7lar\u0131n\u0131 Ko\u015fullu Olarak \u00d6zelle\u015ftirme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Ana-Sorguyu-Degistirmenin-WP-Query-ile-Yeni-Sorgu-Olusturmaktan-Farki\" >Ana Sorguyu De\u011fi\u015ftirmenin `WP_Query` ile Yeni Sorgu Olu\u015fturmaktan Fark\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#is-main-query-Kontrolunun-Hayati-Onemi\" >`is_main_query()` Kontrol\u00fcn\u00fcn Hayati \u00d6nemi<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Ileri-Seviye-Teknikler-ve-Pratik-Senaryolar\" >\u0130leri Seviye Teknikler ve Pratik Senaryolar<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#tax-query-ve-meta-queryyi-Ayni-Sorguda-Birlestirme\" >`tax_query` ve `meta_query`&#8217;yi Ayn\u0131 Sorguda Birle\u015ftirme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Cografi-Konum-Verilerine-Gore-Siralama-ve-Filtreleme\" >Co\u011frafi Konum Verilerine G\u00f6re S\u0131ralama ve Filtreleme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Populer-Yazilari-Belirlemek-icin-Yorum-Sayisina-Gore-Sorgulama\" >Pop\u00fcler Yaz\u0131lar\u0131 Belirlemek i\u00e7in Yorum Say\u0131s\u0131na G\u00f6re Sorgulama<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Coklu-Dongulerde-Dikkat-Edilmesi-Gerekenler-ve-wp-reset-postdata\" >\u00c7oklu D\u00f6ng\u00fclerde Dikkat Edilmesi Gerekenler ve `wp_reset_postdata()`<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Yuksek-Performansli-WordPress-Projeleriniz-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\" >Y\u00fcksek Performansl\u0131 WordPress Projeleriniz \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Optimize-Edilmis-Sunucu-Altyapisi-ve-Hizli-Veritabani-Erisimi\" >Optimize Edilmi\u015f Sunucu Altyap\u0131s\u0131 ve H\u0131zl\u0131 Veritaban\u0131 Eri\u015fimi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Gelismis-Onbellekleme-Cozumleri-ile-WP-Query-Yukunun-Azaltilmasi\" >Geli\u015fmi\u015f \u00d6nbellekleme \u00c7\u00f6z\u00fcmleri ile WP_Query Y\u00fck\u00fcn\u00fcn Azalt\u0131lmas\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Gelistirici-Dostu-Ortam-ve-Uzman-WordPress-Destegi\" >Geli\u015ftirici Dostu Ortam ve Uzman WordPress Deste\u011fi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/www.ihs.com.tr\/blog\/wp-query-sinifinin-derinlikleri-karmasik-sorgular-olusturma-sanati\/#Yogun-Veritabani-Islemlerinde-Guvenilirlik-ve-Olceklenebilirlik\" >Yo\u011fun Veritaban\u0131 \u0130\u015flemlerinde G\u00fcvenilirlik ve \u00d6l\u00e7eklenebilirlik<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"WP-Querye-Giris-ve-Temel-Kavramlar\"><\/span>WP_Query&#8217;e Giri\u015f ve Temel Kavramlar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Her WordPress temas\u0131n\u0131n veya eklentisinin kalbinde, veritaban\u0131ndan belirli yaz\u0131lar\u0131, sayfalar\u0131 veya \u00f6zel yaz\u0131 tiplerini (custom post types) getirmek i\u00e7in kullan\u0131lan bir mekanizma yatar. `WP_Query` s\u0131n\u0131f\u0131, bu mekanizman\u0131n en g\u00fc\u00e7l\u00fc ve esnek arac\u0131d\u0131r. Geli\u015ftiricilerin, WordPress&#8217;in standart ak\u0131\u015f\u0131n\u0131n d\u0131\u015f\u0131na \u00e7\u0131karak tamamen \u00f6zelle\u015ftirilmi\u015f i\u00e7erik listeleri olu\u015fturmas\u0131na olanak tan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"WP-Query-Sinifi-Nedir-ve-Neden-Onemlidir\"><\/span>WP_Query S\u0131n\u0131f\u0131 Nedir ve Neden \u00d6nemlidir?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`WP_Query`, WordPress veritaban\u0131ndaki g\u00f6nderilerle (yaz\u0131lar, sayfalar, \u00fcr\u00fcnler vb.) ilgili karma\u015f\u0131k sorgular olu\u015fturmak i\u00e7in kullan\u0131lan bir PHP s\u0131n\u0131f\u0131d\u0131r. \u00d6nceden tan\u0131mlanm\u0131\u015f bir dizi parametre alarak bu parametrelere uygun i\u00e7erikleri bir nesne olarak d\u00f6nd\u00fcr\u00fcr. Bu s\u0131n\u0131f\u0131n \u00f6nemi, WordPress&#8217;in ana sorgusunu bozmadan, sayfan\u0131n herhangi bir yerinde ikincil ve ba\u011f\u0131ms\u0131z i\u00e7erik d\u00f6ng\u00fcleri olu\u015fturabilme yetene\u011finden gelir. Bu, bir kenar \u00e7ubu\u011funda &#8220;en son 5 yorum alan yaz\u0131y\u0131&#8221; veya bir sayfan\u0131n alt\u0131nda &#8220;ayn\u0131 kategorideki di\u011fer \u00fcr\u00fcnleri&#8221; g\u00f6stermek gibi geli\u015fmi\u015f \u00f6zellikleri m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"WordPress-Dongusu-The-Loop-ile-Iliskisi\"><\/span>WordPress D\u00f6ng\u00fcs\u00fc (The Loop) ile \u0130li\u015fkisi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress&#8217;in me\u015fhur &#8220;D\u00f6ng\u00fcs\u00fc&#8221; (The Loop), `WP_Query` taraf\u0131ndan getirilen g\u00f6nderi koleksiyonu \u00fczerinde gezinmek i\u00e7in kullan\u0131lan standart PHP kod blo\u011fudur. Bir `WP_Query` nesnesi olu\u015fturdu\u011funuzda, asl\u0131nda The Loop&#8217;un kullanaca\u011f\u0131 \u00f6zel bir veri seti haz\u0131rlam\u0131\u015f olursunuz. `have_posts()` ve `the_post()` gibi temel d\u00f6ng\u00fc fonksiyonlar\u0131, olu\u015fturdu\u011funuz bu \u00f6zel `WP_Query` nesnesi \u00fczerinde \u00e7al\u0131\u015farak her bir g\u00f6nderinin ba\u015fl\u0131k, i\u00e7erik, meta veri gibi bilgilerini ekrana basar. K\u0131sacas\u0131 `WP_Query` veriyi getirir, The Loop ise bu veriyi i\u015fleyip g\u00f6sterir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Temel-Bir-WP-Query-Sorgusunun-Anatomisi\"><\/span>Temel Bir WP_Query Sorgusunun Anatomisi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tipik bir `WP_Query` kullan\u0131m\u0131 \u00fc\u00e7 ana ad\u0131mdan olu\u015fur: arg\u00fcmanlar\u0131 belirleme, yeni bir sorgu nesnesi olu\u015fturma ve d\u00f6ng\u00fcy\u00fc \u00e7al\u0131\u015ft\u0131rma. Arg\u00fcmanlar, ne t\u00fcr i\u00e7erik istedi\u011finizi belirten bir dizi (array) i\u00e7inde tan\u0131mlan\u0131r. \u00d6rne\u011fin, &#8216;event&#8217; ad\u0131nda \u00f6zel bir yaz\u0131 tipinden, yay\u0131nlanm\u0131\u015f son 3 i\u00e7eri\u011fi \u00e7ekmek i\u00e7in \u015f\u00f6yle bir yap\u0131 kullan\u0131l\u0131r:<\/p>\n<p><code>$args = array(<br \/>\n&nbsp; 'post_type' => 'event',<br \/>\n&nbsp; 'post_status' => 'publish',<br \/>\n&nbsp; 'posts_per_page' => 3,<br \/>\n);<\/p>\n<p>$etkinlik_sorgusu = new WP_Query( $args );<\/p>\n<p>if ( $etkinlik_sorgusu->have_posts() ) {<br \/>\n&nbsp; while ( $etkinlik_sorgusu->have_posts() ) {<br \/>\n&nbsp; &nbsp; $etkinlik_sorgusu->the_post();<br \/>\n&nbsp; &nbsp; \/\/ Burada yaz\u0131 ba\u015fl\u0131\u011f\u0131, i\u00e7eri\u011fi vb. g\u00f6sterilir.<br \/>\n&nbsp; }<br \/>\n&nbsp; wp_reset_postdata();<br \/>\n}<\/code><\/p>\n<p>Bu yap\u0131, WordPress geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve esnekli\u011fi sayesinde neredeyse s\u0131n\u0131rs\u0131z olas\u0131l\u0131k sunar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"query-posts-ve-get-posts-ile-Farklari-ve-Neden-WP-Query-Tercih-Edilmeli\"><\/span>`query_posts()` ve `get_posts()` ile Farklar\u0131 ve Neden WP_Query Tercih Edilmeli?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress&#8217;te veri \u00e7ekmek i\u00e7in `WP_Query` d\u0131\u015f\u0131nda `query_posts()` ve `get_posts()` fonksiyonlar\u0131 da bulunur. Ancak modern WordPress geli\u015ftirmesinde `WP_Query`&#8217;nin tercih edilmesinin \u00f6nemli nedenleri vard\u0131r. `query_posts()` fonksiyonu, sayfan\u0131n ana sorgusunu do\u011frudan de\u011fi\u015ftirir ve bu durum, \u00f6zellikle karma\u015f\u0131k sayfalarda ve eklentilerle \u00e7ak\u0131\u015fmalara yol a\u00e7arak beklenmedik sonu\u00e7lar do\u011furabilir. Bu nedenle kullan\u0131m\u0131 kesinlikle \u00f6nerilmez. `get_posts()` ise daha basit bir kullan\u0131m sunar ve bir dizi (array) olarak g\u00f6nderi listesi d\u00f6nd\u00fcr\u00fcr, ancak `WP_Query`&#8217;nin sundu\u011fu t\u00fcm geli\u015fmi\u015f parametre ve nesne \u00f6zelliklerinden yoksundur. \u0130kincil, basit listelemeler i\u00e7in uygun olsa da karma\u015f\u0131k filtreleme gerekti\u011finde yetersiz kal\u0131r.<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>WP_Query<\/th>\n<th>get_posts()<\/th>\n<th>query_posts()<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Kullan\u0131m Amac\u0131<\/b><\/td>\n<td>Karma\u015f\u0131k, ikincil d\u00f6ng\u00fcler olu\u015fturma<\/td>\n<td>Basit, ikincil listeler i\u00e7in veri \u00e7ekme<\/td>\n<td>Ana sorguyu de\u011fi\u015ftirme (\u00d6nerilmez)<\/td>\n<\/tr>\n<tr>\n<td><b>D\u00f6nd\u00fcrd\u00fc\u011f\u00fc De\u011fer<\/b><\/td>\n<td>WP_Query Nesnesi<\/td>\n<td>G\u00f6nderi Nesneleri Dizisi<\/td>\n<td>G\u00f6nderi Nesneleri Dizisi<\/td>\n<\/tr>\n<tr>\n<td><b>Performans<\/b><\/td>\n<td>Parametrelere g\u00f6re optimize edilebilir<\/td>\n<td>Genellikle h\u0131zl\u0131, ancak daha az esnek<\/td>\n<td>Ana sorguyu bozdu\u011fu i\u00e7in performans\u0131 olumsuz etkileyebilir<\/td>\n<\/tr>\n<tr>\n<td><b>En \u0130yi Kullan\u0131m<\/b><\/td>\n<td>\u00d6zelle\u015ftirilmi\u015f t\u00fcm i\u00e7erik bloklar\u0131, widget&#8217;lar, karma\u015f\u0131k filtreleme gereken her yer.<\/td>\n<td>Basit bir &#8220;\u0130lgili Yaz\u0131lar&#8221; listesi gibi yard\u0131mc\u0131 i\u00e7erikler.<\/td>\n<td>Kullan\u0131lmamal\u0131d\u0131r. Bunun yerine `pre_get_posts` kullan\u0131lmal\u0131d\u0131r.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Temel-Sorgu-Parametreleri-ile-Filtreleme\"><\/span>Temel Sorgu Parametreleri ile Filtreleme<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>`WP_Query`&#8217;nin g\u00fcc\u00fc, sundu\u011fu zengin parametre setinde yatar. Bu parametreler sayesinde veritaban\u0131ndan tam olarak istedi\u011finiz i\u00e7erik setini hassas bir \u015fekilde filtreleyebilirsiniz. Temel filtreleme i\u015flemleri i\u00e7in kullan\u0131lan bu parametreler, \u00e7o\u011fu senaryo i\u00e7in yeterli kontrol\u00fc sa\u011flar ve karma\u015f\u0131k sorgular\u0131n temelini olu\u015fturur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yazi-Tipi-Parametreleri-post-type-post-status\"><\/span>Yaz\u0131 Tipi Parametreleri (`post_type`, `post_status`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En temel filtreleme, yaz\u0131 tipi ve durumuna g\u00f6re yap\u0131l\u0131r. `post_type` parametresi ile hangi t\u00fcr i\u00e7eri\u011fi \u00e7ekece\u011finizi belirtirsiniz. Bu, `&#8217;post&#8217;` (yaz\u0131), `&#8217;page&#8217;` (sayfa) veya kendi olu\u015fturdu\u011funuz \u00f6zel yaz\u0131 tipleri (\u00f6rne\u011fin, `&#8217;product&#8217;`, `&#8217;portfolio&#8217;`) olabilir. Birden fazla yaz\u0131 tipini \u00e7ekmek i\u00e7in bir dizi kullanabilirsiniz: ` &#8216;post_type&#8217; => array(&#8216;post&#8217;, &#8216;page&#8217;) `. `post_status` parametresi ise yaz\u0131n\u0131n durumunu belirtir. Varsay\u0131lan olarak `&#8217;publish&#8217;` (yay\u0131nlanm\u0131\u015f) olan bu de\u011feri `&#8217;draft&#8217;` (taslak), `&#8217;pending&#8217;` (incelemede) veya `&#8217;private&#8217;` (\u00f6zel) gibi farkl\u0131 durumlarla de\u011fi\u015ftirebilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yazar-Parametreleri-author-author-in-author-not-in\"><\/span>Yazar Parametreleri (`author`, `author__in`, `author__not_in`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0130\u00e7erikleri yazarlar\u0131na g\u00f6re filtrelemek de olduk\u00e7a yayg\u0131nd\u0131r. `author` parametresi, tek bir yazar\u0131n ID&#8217;sini alarak sadece o yazara ait i\u00e7erikleri listeler. E\u011fer birden fazla yazar\u0131 dahil etmek isterseniz `author__in` parametresine yazar ID&#8217;lerinden olu\u015fan bir dizi vermelisiniz. Tam tersi, belirli yazarlar\u0131 hari\u00e7 tutmak i\u00e7in ise `author__not_in` parametresi kullan\u0131l\u0131r. Bu, \u00f6zellikle \u00e7ok yazarl\u0131 bloglarda veya belirli bir yazar\u0131n katk\u0131lar\u0131n\u0131 sergilemek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kategori-ve-Etiket-Parametreleri-category-in-tag-and\"><\/span>Kategori ve Etiket Parametreleri (`category__in`, `tag__and`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Blog yaz\u0131lar\u0131 gibi taksonomilerle d\u00fczenlenmi\u015f i\u00e7erikler i\u00e7in kategori ve etiket bazl\u0131 filtreleme kritiktir. `category__in` parametresi, belirtti\u011finiz kategori ID&#8217;lerinden herhangi birine sahip olan yaz\u0131lar\u0131 getirir. \u00d6rne\u011fin, ` &#8216;category__in&#8217; => array(2, 6) ` sorgusu, 2 veya 6 ID&#8217;li kategorideki t\u00fcm yaz\u0131lar\u0131 listeler. `tag__and` ise daha k\u0131s\u0131tlay\u0131c\u0131d\u0131r; belirtti\u011finiz t\u00fcm etiket ID&#8217;lerine ayn\u0131 anda sahip olan yaz\u0131lar\u0131 getirir. Yani `&#8217;tag__and&#8217; => array(7, 8)` sorgusu, hem 7 ID&#8217;li etikete hem de 8 ID&#8217;li etikete sahip olan yaz\u0131lar\u0131 bulur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sayfalama-Parametreleri-posts-per-page-paged-offset\"><\/span>Sayfalama Parametreleri (`posts_per_page`, `paged`, `offset`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00c7ok say\u0131da i\u00e7eri\u011fi listelerken sayfalama yapmak hem kullan\u0131c\u0131 deneyimi hem de performans i\u00e7in zorunludur. `posts_per_page` parametresi, bir sayfada ka\u00e7 adet yaz\u0131 g\u00f6sterilece\u011fini belirler. `-1` de\u011feri t\u00fcm yaz\u0131lar\u0131n getirilmesini sa\u011flar. `paged` parametresi, o an g\u00f6r\u00fcnt\u00fclenen sayfa numaras\u0131n\u0131 al\u0131r ve WordPress&#8217;in do\u011fru i\u00e7erik setini hesaplamas\u0131n\u0131 sa\u011flar. Genellikle bu de\u011fer URL&#8217;den dinamik olarak al\u0131n\u0131r. `offset` parametresi ise daha \u00f6zel bir kullan\u0131m sunar; sorgunun ilk X adet sonucu atlayarak ba\u015flamas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, en son yaz\u0131y\u0131 farkl\u0131 bir stilde g\u00f6sterip, geri kalanlar\u0131 normal listelemek i\u00e7in ` &#8216;offset&#8217; => 1 ` kullanabilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Siralama-Parametreleri-orderby-order\"><\/span>S\u0131ralama Parametreleri (`orderby`, `order`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0130\u00e7eriklerinizi nas\u0131l s\u0131ralayaca\u011f\u0131n\u0131z\u0131 `orderby` ve `order` parametreleri ile kontrol edersiniz. `orderby` i\u00e7in `date` (tarih), `title` (ba\u015fl\u0131k), `author` (yazar), `comment_count` (yorum say\u0131s\u0131) gibi bir\u00e7ok de\u011fer kullan\u0131labilir. `order` parametresi ise s\u0131ralaman\u0131n y\u00f6n\u00fcn\u00fc belirler: `ASC` (artan, eskiden yeniye) veya `DESC` (azalan, yeniden eskiye). Varsay\u0131lan s\u0131ralama, tarihe g\u00f6re azalan \u015fekildedir (`&#8217;orderby&#8217; => &#8216;date&#8217;, &#8216;order&#8217; => &#8216;DESC&#8217;`). \u00d6rne\u011fin, yaz\u0131lar\u0131n\u0131z\u0131 ba\u015fl\u0131\u011fa g\u00f6re alfabetik olarak s\u0131ralamak i\u00e7in ` &#8216;orderby&#8217; => &#8216;title&#8217;, &#8216;order&#8217; => &#8216;ASC&#8217; ` kullanman\u0131z gerekir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Karmasik-Taksonomi-Sorgulari-Olusturma-tax-query\"><\/span>Karma\u015f\u0131k Taksonomi Sorgular\u0131 Olu\u015fturma: `tax_query`<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress&#8217;in temel kategori ve etiket parametreleri \u00e7o\u011fu zaman yeterli olsa da, \u00f6zel taksonomilerle (custom taxonomies) \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda veya birden fazla taksonomi ko\u015fulunu birle\u015ftirmeniz gerekti\u011finde daha geli\u015fmi\u015f bir araca ihtiya\u00e7 duyars\u0131n\u0131z. \u0130\u015fte bu noktada `tax_query` devreye girer. `tax_query`, son derece esnek ve g\u00fc\u00e7l\u00fc bir \u015fekilde taksonomi tabanl\u0131 filtreleme yapman\u0131z\u0131 sa\u011flayan bir dizi parametresidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"tax-query-Dizisine-Giris-ve-Temel-Yapisi\"><\/span>`tax_query` Dizisine Giri\u015f ve Temel Yap\u0131s\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`tax_query`, i\u00e7erisinde bir veya daha fazla taksonomi sorgu dizisi bar\u0131nd\u0131ran bir ana dizidir. Her bir i\u00e7 dizi, belirli bir taksonomi i\u00e7in bir ko\u015ful tan\u0131mlar. Bu ko\u015ful; taksonominin ad\u0131n\u0131 (`taxonomy`), hangi alana g\u00f6re e\u015fle\u015ftirme yap\u0131laca\u011f\u0131n\u0131 (`field` &#8211; genellikle &#8216;term_id&#8217; veya &#8216;slug&#8217;) ve hangi terimlerin filtrelenece\u011fini (`terms`) i\u00e7erir. Bu yap\u0131, sorgular\u0131n\u0131z\u0131 mod\u00fcler ve okunabilir hale getirir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tek-Bir-Taksonomiye-Gore-Filtreleme\"><\/span>Tek Bir Taksonomiye G\u00f6re Filtreleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u00d6rne\u011fin, &#8216;urun_kategorisi&#8217; ad\u0131nda bir \u00f6zel taksonominiz ve bu taksonomi i\u00e7inde &#8216;elektronik&#8217; slug&#8217;\u0131na sahip bir teriminiz oldu\u011funu varsayal\u0131m. Bu kategoriye ait \u00fcr\u00fcnleri \u00e7ekmek i\u00e7in `tax_query` \u015f\u00f6yle yap\u0131land\u0131r\u0131l\u0131r:<\/p>\n<p><code>'tax_query' => array(<br \/>\n&nbsp; array(<br \/>\n&nbsp; &nbsp; 'taxonomy' => 'urun_kategorisi',<br \/>\n&nbsp; &nbsp; 'field' &nbsp; &nbsp;=> 'slug',<br \/>\n&nbsp; &nbsp; 'terms' &nbsp; &nbsp;=> 'elektronik',<br \/>\n&nbsp; ),<br \/>\n)<\/code><\/p>\n<p>Bu sorgu, &#8216;urun_kategorisi&#8217; taksonomisinde &#8216;elektronik&#8217; terimine sahip t\u00fcm g\u00f6nderileri getirecektir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Birden-Fazla-Taksonomi-Kosulunu-Birlestirme\"><\/span>Birden Fazla Taksonomi Ko\u015fulunu Birle\u015ftirme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`tax_query`&#8217;nin as\u0131l g\u00fcc\u00fc, birden fazla ko\u015fulu birle\u015ftirebilmesinde yatar. &#8216;renk&#8217; ad\u0131nda ikinci bir taksonominiz oldu\u011funu ve hem &#8216;elektronik&#8217; kategorisindeki hem de &#8216;kirmizi&#8217; renkteki \u00fcr\u00fcnleri bulmak istedi\u011finizi d\u00fc\u015f\u00fcnelim. Bu durumda `tax_query` dizisine ikinci bir ko\u015ful dizisi eklersiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"relation-Parametresi-AND-ve-OR-Kullanimi\"><\/span>`relation` Parametresi: `AND` ve `OR` Kullan\u0131m\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Birden fazla taksonomi ko\u015fulu ekledi\u011finizde, bu ko\u015fullar\u0131n birbiriyle nas\u0131l ili\u015fkilendirilece\u011fini `relation` parametresi ile belirlersiniz. `relation`, ana `tax_query` dizisinin ilk seviyesinde yer al\u0131r. De\u011feri `AND` ise, t\u00fcm ko\u015fullar\u0131n ayn\u0131 anda sa\u011flanmas\u0131 gerekir. De\u011feri `OR` ise, ko\u015fullardan herhangi birinin sa\u011flanmas\u0131 yeterlidir.<\/p>\n<p><b>`AND` \u00d6rne\u011fi:<\/b> &#8216;elektronik&#8217; kategorisinde VE &#8216;kirmizi&#8217; renkte olan \u00fcr\u00fcnler.<br \/>\n<code>'tax_query' => array(<br \/>\n&nbsp; 'relation' => 'AND',<br \/>\n&nbsp; array(... 'terms' => 'elektronik' ...),<br \/>\n&nbsp; array(... 'terms' => 'kirmizi' ...),<br \/>\n)<\/code><\/p>\n<p><b>`OR` \u00d6rne\u011fi:<\/b> &#8216;elektronik&#8217; kategorisinde VEYA &#8216;kirmizi&#8217; renkte olan \u00fcr\u00fcnler.<br \/>\n<code>'tax_query' => array(<br \/>\n&nbsp; 'relation' => 'OR',<br \/>\n&nbsp; array(... 'terms' => 'elektronik' ...),<br \/>\n&nbsp; array(... 'terms' => 'kirmizi' ...),<br \/>\n)<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"operator-Parametresi-ile-Gelismis-Eslestirme-IN-NOT-IN-EXISTS\"><\/span>`operator` Parametresi ile Geli\u015fmi\u015f E\u015fle\u015ftirme (`IN`, `NOT IN`, `EXISTS`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Her bir taksonomi ko\u015fulu i\u00e7inde, `terms` parametresindeki terimlerle nas\u0131l e\u015fle\u015ftirme yap\u0131laca\u011f\u0131n\u0131 `operator` parametresi belirler. Varsay\u0131lan de\u011fer `IN`&#8217;dir ve `terms` dizisindeki terimlerden herhangi birine sahip olan g\u00f6nderileri getirir. `NOT IN` operat\u00f6r\u00fc, `terms` dizisindeki terimlerin hi\u00e7birine sahip olmayan g\u00f6nderileri se\u00e7er. `EXISTS` operat\u00f6r\u00fc ise `terms` parametresine ihtiya\u00e7 duymaz ve sadece ilgili taksonomiye atanm\u0131\u015f herhangi bir terimi olan t\u00fcm g\u00f6nderileri getirir. Bu, \u00f6rne\u011fin hi\u00e7 rengi belirtilmemi\u015f \u00fcr\u00fcnleri bulmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r (`operator` `NOT EXISTS` olarak ayarlan\u0131r).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ic-Ice-Taksonomi-Sorgulari-ile-Detayli-Filtreleme\"><\/span>\u0130\u00e7 \u0130\u00e7e Taksonomi Sorgular\u0131 ile Detayl\u0131 Filtreleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`tax_query`, kendi i\u00e7inde ba\u015fka `tax_query` dizileri bar\u0131nd\u0131rabilir. Bu, son derece karma\u015f\u0131k mant\u0131ksal gruplamalar yapman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, &#8220;(A kategorisinde VE B renginde) VEYA (C kategorisindeki)&#8221; gibi bir sorgu olu\u015fturabilirsiniz. Bu, `relation` parametresini farkl\u0131 seviyelerde kullanarak `(A AND B) OR C` mant\u0131\u011f\u0131n\u0131 kurman\u0131z\u0131 sa\u011flar ve filtreleme yeteneklerinizi bir \u00fcst seviyeye ta\u015f\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Gelismis-Meta-Veri-Sorgulari-meta-query\"><\/span>Geli\u015fmi\u015f Meta Veri Sorgular\u0131: `meta_query`<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress&#8217;te her yaz\u0131ya \u00f6zel alanlar (custom fields) arac\u0131l\u0131\u011f\u0131yla ek bilgiler, yani meta veriler eklenebilir. Bir \u00fcr\u00fcn\u00fcn fiyat\u0131, bir etkinli\u011fin ba\u015flang\u0131\u00e7 tarihi veya bir ilan\u0131n konumu gibi veriler meta olarak saklan\u0131r. `meta_query`, bu meta verilere dayanarak g\u00f6nderileri filtrelemek i\u00e7in tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc bir `WP_Query` parametresidir. T\u0131pk\u0131 `tax_query` gibi, karma\u015f\u0131k ko\u015fullar olu\u015fturmak i\u00e7in i\u00e7 i\u00e7e dizilerden olu\u015fan bir yap\u0131 kullan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"meta-query-Dizisi-ve-Temel-Bilesenleri-key-value-compare\"><\/span>`meta_query` Dizisi ve Temel Bile\u015fenleri (`key`, `value`, `compare`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir `meta_query`&#8217;nin temel yap\u0131 ta\u015f\u0131, tek bir meta ko\u015fulunu tan\u0131mlayan bir dizidir. Bu dizinin \u00fc\u00e7 ana bile\u015feni vard\u0131r:<\/p>\n<ul>\n<li><b>`key`<\/b>: Sorgulamak istedi\u011finiz \u00f6zel alan\u0131n ad\u0131d\u0131r (\u00f6rne\u011fin, &#8216;fiyat&#8217;).<\/li>\n<li><b>`value`<\/b>: `key` ile belirtilen alan\u0131n sahip olmas\u0131 veya kar\u015f\u0131la\u015ft\u0131r\u0131lmas\u0131 gereken de\u011ferdir (\u00f6rne\u011fin, 100).<\/li>\n<li><b>`compare`<\/b>: `value`&#8217;nun meta veriyle nas\u0131l kar\u015f\u0131la\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 belirten operat\u00f6rd\u00fcr. Varsay\u0131lan operat\u00f6r `=` (e\u015fittir).<\/li>\n<\/ul>\n<p>\u00d6rne\u011fin, fiyat\u0131 tam olarak 100 TL olan \u00fcr\u00fcnleri bulmak i\u00e7in temel sorgu \u015f\u00f6yle olur:<br \/>\n<code>'meta_query' => array( array( 'key' => 'fiyat', 'value' => 100, 'compare' => '=' ) )<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sayisal-Degerlere-Gore-Karsilastirma-compare-%3E\"><\/span>Say\u0131sal De\u011ferlere G\u00f6re Kar\u015f\u0131la\u015ft\u0131rma (`compare`: `>`, `<`, `BETWEEN`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`meta_query`&#8217;nin g\u00fcc\u00fc, `compare` operat\u00f6r\u00fcn\u00fcn \u00e7e\u015fitlili\u011finden gelir. Say\u0131sal verilerle \u00e7al\u0131\u015f\u0131rken `>` (b\u00fcy\u00fckt\u00fcr), `<` (k\u00fc\u00e7\u00fckt\u00fcr), `>=` (b\u00fcy\u00fck veya e\u015fit), `<=` (k\u00fc\u00e7\u00fck veya e\u015fit) gibi operat\u00f6rleri kullanabilirsiniz. Belirli bir aral\u0131ktaki de\u011ferleri bulmak i\u00e7in `BETWEEN` operat\u00f6r\u00fc kullan\u0131l\u0131r. `BETWEEN` kullan\u0131ld\u0131\u011f\u0131nda, `value` parametresi iki elemanl\u0131 bir dizi olmal\u0131d\u0131r (minimum ve maksimum de\u011ferler). \u00d6rne\u011fin, fiyat\u0131 50 ile 150 aras\u0131nda olan \u00fcr\u00fcnler:\n<code>&#8216;value&#8217; => array(50, 150), &#8216;compare&#8217; => &#8216;BETWEEN&#8217;<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Metin-Tabanli-Karsilastirmalar-compare-LIKE-NOT-LIKE\"><\/span>Metin Tabanl\u0131 Kar\u015f\u0131la\u015ft\u0131rmalar (`compare`: `LIKE`, `NOT LIKE`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Metin i\u00e7eren meta alanlar\u0131nda arama yapmak i\u00e7in `LIKE` operat\u00f6r\u00fc kullan\u0131l\u0131r. Bu, SQL&#8217;deki `LIKE` ifadesine benzer \u015fekilde \u00e7al\u0131\u015f\u0131r ve belirli bir metin par\u00e7as\u0131n\u0131 i\u00e7eren de\u011ferleri bulur. \u00d6rne\u011fin, ad\u0131nda &#8216;laptop&#8217; kelimesi ge\u00e7en ilanlar\u0131 bulmak i\u00e7in:<br \/>\n<code>'key' => 'ilan_basligi', 'value' => 'laptop', 'compare' => 'LIKE'<\/code><br \/>\n`NOT LIKE` ise tam tersini yaparak belirtilen metni i\u00e7ermeyen sonu\u00e7lar\u0131 getirir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"type-Parametresi-ile-Veri-Tipini-Belirtme-NUMERIC-DATE-CHAR\"><\/span>`type` Parametresi ile Veri Tipini Belirtme (`NUMERIC`, `DATE`, `CHAR`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress meta verileri veritaban\u0131nda metin (text) olarak saklar. Bu durum, say\u0131sal veya tarihsel kar\u015f\u0131la\u015ft\u0131rmalar yaparken yanl\u0131\u015f sonu\u00e7lara yol a\u00e7abilir (\u00f6rne\u011fin, &#8216;100&#8217; metni &#8217;99&#8217; metninden k\u00fc\u00e7\u00fck s\u0131ralanabilir). Bunu \u00f6nlemek i\u00e7in `type` parametresi kullan\u0131l\u0131r. Kar\u015f\u0131la\u015ft\u0131rman\u0131n do\u011fru yap\u0131lmas\u0131 i\u00e7in `type`&#8217;\u0131 `NUMERIC`, `DATE`, `DATETIME`, `DECIMAL` gibi uygun veri tipiyle belirtmek kritik \u00f6neme sahiptir. Fiyat kar\u015f\u0131la\u015ft\u0131rmas\u0131 yaparken ` &#8216;type&#8217; => &#8216;NUMERIC&#8217; ` eklemek, sorgunun do\u011fru \u00e7al\u0131\u015fmas\u0131n\u0131 garantiler.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"relation-Kullanarak-Coklu-Meta-Kosullarini-Yonetme\"><\/span>`relation` Kullanarak \u00c7oklu Meta Ko\u015fullar\u0131n\u0131 Y\u00f6netme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>T\u0131pk\u0131 `tax_query`&#8217;de oldu\u011fu gibi, birden fazla meta ko\u015fulunu birle\u015ftirmek i\u00e7in `relation` parametresi kullan\u0131l\u0131r. Fiyat\u0131 1000&#8217;den b\u00fcy\u00fck VE stok durumu &#8216;var&#8217; olan \u00fcr\u00fcnleri bulmak i\u00e7in `relation` `AND` olarak ayarlan\u0131r. Fiyat\u0131 100&#8217;den k\u00fc\u00e7\u00fck VEYA rengi &#8216;mavi&#8217; olan \u00fcr\u00fcnler i\u00e7in ise `relation` `OR` olmal\u0131d\u0131r.<br \/>\n<code>'meta_query' => array( 'relation' => 'AND', array('key' => 'fiyat', ...), array('key' => 'stok', ...) )<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Var-Olan-EXISTS-veya-Olmayan-NOT-EXISTS-Meta-Alanlarina-Gore-Sorgulama\"><\/span>Var Olan (`EXISTS`) veya Olmayan (`NOT EXISTS`) Meta Alanlar\u0131na G\u00f6re Sorgulama<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bazen bir meta alan\u0131n\u0131n de\u011ferinden \u00e7ok, var olup olmad\u0131\u011f\u0131yla ilgileniriz. `compare` operat\u00f6r\u00fcn\u00fc `EXISTS` olarak ayarlayarak belirli bir meta anahtar\u0131na sahip t\u00fcm g\u00f6nderileri bulabilirsiniz. Bu durumda `value` parametresine gerek yoktur. \u00d6rne\u011fin, &#8216;indirim_orani&#8217; ad\u0131nda bir \u00f6zel alan\u0131 olan t\u00fcm \u00fcr\u00fcnleri listelemek i\u00e7in ` &#8216;key&#8217; => &#8216;indirim_orani&#8217;, &#8216;compare&#8217; => &#8216;EXISTS&#8217; ` kullan\u0131l\u0131r. `NOT EXISTS` ise bu alan\u0131n hi\u00e7 tan\u0131mlanmad\u0131\u011f\u0131 g\u00f6nderileri getirir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Zaman-ve-Tarih-Eksenli-Sorgular-date-query\"><\/span>Zaman ve Tarih Eksenli Sorgular: `date_query`<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0130\u00e7erikleri yay\u0131nlanma tarihlerine g\u00f6re filtrelemek, WordPress&#8217;te s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir ihtiya\u00e7t\u0131r. Belirli bir ay\u0131n ar\u015fivi, bir etkinlik takvimi veya &#8220;bu hafta yay\u0131nlananlar&#8221; gibi \u00f6zellikler i\u00e7in zamana dayal\u0131 hassas sorgular olu\u015fturmak gerekir. `WP_Query`, bu t\u00fcr ihtiya\u00e7lar i\u00e7in `date_query` ad\u0131nda \u00f6zel bir parametre sunar. Bu parametre, `tax_query` ve `meta_query`&#8217;ye benzer \u015fekilde, bir dizi ko\u015ful yap\u0131s\u0131 kullanarak tarih bazl\u0131 karma\u015f\u0131k filtrelemeler yapmaya olanak tan\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"date-query-Dizisinin-Kullanimi\"><\/span>`date_query` Dizisinin Kullan\u0131m\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`date_query`, i\u00e7inde bir veya daha fazla tarih ko\u015fulu dizisi bar\u0131nd\u0131ran bir ana dizidir. Her i\u00e7 dizi, filtrelenecek zaman birimini ve de\u011ferini belirtir. Bu yap\u0131, hem basit hem de karma\u015f\u0131k tarih sorgular\u0131n\u0131 organize ve okunabilir bir \u015fekilde olu\u015fturman\u0131z\u0131 sa\u011flar. Sorgular, yaz\u0131lar\u0131n `post_date` s\u00fctununa g\u00f6re \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yil-Ay-ve-Gune-Gore-Hassas-Filtreleme\"><\/span>Y\u0131l, Ay ve G\u00fcne G\u00f6re Hassas Filtreleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En temel `date_query` kullan\u0131m\u0131, belirli bir y\u0131l, ay veya g\u00fcne ait yaz\u0131lar\u0131 getirmektir. Bunun i\u00e7in `year`, `month` (veya `monthnum`), ve `day` parametreleri kullan\u0131l\u0131r. \u00d6rne\u011fin, 2023 y\u0131l\u0131n\u0131n Ekim ay\u0131nda yay\u0131nlanan t\u00fcm yaz\u0131lar\u0131 bulmak i\u00e7in sorgu \u015fu \u015fekilde olur:<\/p>\n<p><code>'date_query' => array(<br \/>\n&nbsp; array(<br \/>\n&nbsp; &nbsp; 'year' &nbsp;=> 2023,<br \/>\n&nbsp; &nbsp; 'month' => 10,<br \/>\n&nbsp; ),<br \/>\n)<\/code><\/p>\n<p>Bu parametreleri tek tek de kullanabilirsiniz. Sadece ` &#8216;year&#8217; => 2023 ` kullanarak o y\u0131la ait t\u00fcm i\u00e7erikleri getirebilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Belirli-Tarih-Araliklari-Arasinda-Sorgulama-after-before\"><\/span>Belirli Tarih Aral\u0131klar\u0131 Aras\u0131nda Sorgulama (`after`, `before`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Daha esnek sorgular i\u00e7in `after` ve `before` parametreleri kullan\u0131l\u0131r. Bu parametreler, belirli bir tarihten sonraki veya \u00f6nceki yaz\u0131lar\u0131 alman\u0131z\u0131 sa\u011flar. De\u011fer olarak &#8216;January 1st, 2023&#8217; gibi do\u011fal dil ifadeleri veya &#8216;YYYY-MM-DD&#8217; format\u0131nda tarihler kabul edilir. \u0130kisini bir arada kullanarak bir tarih aral\u0131\u011f\u0131 tan\u0131mlayabilirsiniz.<\/p>\n<p>\u00d6rne\u011fin, 1 Haziran 2023 ile 30 Haziran 2023 aras\u0131nda yay\u0131nlanan yaz\u0131lar\u0131 listelemek i\u00e7in:<\/p>\n<p><code>'date_query' => array(<br \/>\n&nbsp; array(<br \/>\n&nbsp; &nbsp; 'after' &nbsp; &nbsp;=> 'May 31st, 2023',<br \/>\n&nbsp; &nbsp; 'before' &nbsp; => 'July 1st, 2023',<br \/>\n&nbsp; &nbsp; 'inclusive' => true, \/\/ after ve before tarihlerini dahil eder<br \/>\n&nbsp; ),<br \/>\n)<\/code><\/p>\n<p>`inclusive` parametresini `true` olarak ayarlamak, ba\u015flang\u0131\u00e7 ve biti\u015f tarihlerinin de aral\u0131\u011fa dahil edilmesini sa\u011flar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Haftanin-Gunune-veya-Yilin-Haftasina-Gore-Yazilari-Getirme\"><\/span>Haftan\u0131n G\u00fcn\u00fcne veya Y\u0131l\u0131n Haftas\u0131na G\u00f6re Yaz\u0131lar\u0131 Getirme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`date_query` ayn\u0131 zamanda daha spesifik zaman birimlerine g\u00f6re de filtreleme yapabilir. `week` (veya `w`) parametresi ile y\u0131l\u0131n belirli bir haftas\u0131ndaki (1-53) yaz\u0131lar\u0131, `dayofweek` parametresi ile de haftan\u0131n belirli bir g\u00fcn\u00fcndeki (Pazar i\u00e7in 1&#8217;den Cumartesi i\u00e7in 7&#8217;ye kadar) yaz\u0131lar\u0131 getirebilirsiniz. \u00d6rne\u011fin, son 3 y\u0131l i\u00e7inde Sal\u0131 g\u00fcnleri yay\u0131nlanm\u0131\u015f t\u00fcm i\u00e7erikleri bulmak i\u00e7in `dayofweek` kullan\u0131labilir. Bu, &#8220;Her Sal\u0131 yay\u0131nlananlar&#8221; gibi tekrarlayan i\u00e7erik serilerini listelemek i\u00e7in idealdir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Performans-Optimizasyonu-ve-En-Iyi-Uygulamalar\"><\/span>Performans Optimizasyonu ve En \u0130yi Uygulamalar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>`WP_Query` son derece g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, dikkatsiz kullan\u0131m\u0131 sitenizin performans\u0131n\u0131 olumsuz etkileyebilir. \u00d6zellikle \u00e7ok say\u0131da g\u00f6nderi, karma\u015f\u0131k `meta_query` ve `tax_query` ko\u015fullar\u0131 i\u00e7eren sorgular, veritaban\u0131 \u00fczerinde ciddi bir y\u00fck olu\u015fturabilir. Neyse ki, WordPress bu y\u00fck\u00fc hafifletmek i\u00e7in bir dizi optimizasyon parametresi ve en iyi uygulama sunar. Bu teknikleri kullanarak sorgular\u0131n\u0131z\u0131 daha h\u0131zl\u0131 ve verimli hale getirebilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sorgu-Performansini-Etkileyen-Faktorler\"><\/span>Sorgu Performans\u0131n\u0131 Etkileyen Fakt\u00f6rler<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir `WP_Query` sorgusunun h\u0131z\u0131n\u0131 etkileyen ba\u015fl\u0131ca fakt\u00f6rler \u015funlard\u0131r: sorgulanan g\u00f6nderi say\u0131s\u0131, ko\u015fullar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 (\u00f6zellikle `meta_query`&#8217;de `LIKE` kullan\u0131m\u0131), ve sorgunun ne kadar veri d\u00f6nd\u00fcrd\u00fc\u011f\u00fc. Her bir `JOIN` ve `WHERE` ko\u015fulu, veritaban\u0131n\u0131n yapmas\u0131 gereken i\u015fi art\u0131r\u0131r. Bu nedenle, sorgular\u0131n\u0131z\u0131 her zaman olabildi\u011fince basit ve hedefe y\u00f6nelik tutmak \u00f6nemlidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"no-found-rows-Sayfalama-Olmadiginda-Sorguyu-Hizlandirma\"><\/span>`no_found_rows`: Sayfalama Olmad\u0131\u011f\u0131nda Sorguyu H\u0131zland\u0131rma<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress bir sorgu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131nda, varsay\u0131lan olarak toplam ka\u00e7 tane e\u015fle\u015fen g\u00f6nderi oldu\u011funu da hesaplar. Bu bilgi, sayfalama (pagination) olu\u015fturmak i\u00e7in gereklidir (`1 \/ 10. sayfa` gibi). Ancak, sorgunuzda sayfalama kullanmayacaksan\u0131z (\u00f6rne\u011fin, &#8220;En Son 5 Yaz\u0131&#8221; widget&#8217;\u0131), bu hesaplama gereksiz bir veritaban\u0131 i\u015flemidir. ` &#8216;no_found_rows&#8217; => true ` parametresini ekleyerek WordPress&#8217;e bu say\u0131m\u0131 atlamas\u0131n\u0131 s\u00f6yleyebilir ve sorguyu bir miktar h\u0131zland\u0131rabilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"update-post-term-cache-ve-update-post-meta-cache-Gereksiz-Veritabani-Yukunu-Engelleme\"><\/span>`update_post_term_cache` ve `update_post_meta_cache`: Gereksiz Veritaban\u0131 Y\u00fck\u00fcn\u00fc Engelleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir sorgu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, The Loop i\u00e7inde her bir g\u00f6nderinin kategorilerini, etiketlerini veya \u00f6zel alanlar\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zda, WordPress arka planda her g\u00f6nderi i\u00e7in ek veritaban\u0131 sorgular\u0131 yapabilir. E\u011fer d\u00f6ng\u00fc i\u00e7inde bu bilgilere ihtiyac\u0131n\u0131z yoksa, bu ek sorgular\u0131 ba\u015ftan engelleyebilirsiniz.<\/p>\n<ul>\n<li>`&#8217;update_post_term_cache&#8217; => false`: G\u00f6nderilerin taksonomi (kategori, etiket) bilgilerini \u00f6nbelle\u011fe almay\u0131 durdurur.<\/li>\n<li>`&#8217;update_post_meta_cache&#8217; => false`: G\u00f6nderilerin meta verilerini (\u00f6zel alanlar) \u00f6nbelle\u011fe almay\u0131 durdurur.<\/li>\n<\/ul>\n<p>Bu parametreler, \u00f6zellikle d\u00f6ng\u00fc i\u00e7inde sadece g\u00f6nderi ba\u015fl\u0131\u011f\u0131 ve linki gibi temel bilgileri kullanacaksan\u0131z \u00e7ok etkilidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"fields-Sadece-Gerekli-Veri-Alanlarini-Cekme-ids-id%3Eparent\"><\/span>`fields`: Sadece Gerekli Veri Alanlar\u0131n\u0131 \u00c7ekme (`ids`, `id=>parent`)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Varsay\u0131lan olarak `WP_Query`, e\u015fle\u015fen g\u00f6nderilerin t\u00fcm bilgilerini (`WP_Post` nesnesinin tamam\u0131n\u0131) veritaban\u0131ndan \u00e7eker. Ancak \u00e7o\u011fu zaman sadece g\u00f6nderi ID&#8217;lerine veya belirli birka\u00e7 alana ihtiyac\u0131n\u0131z olur. `fields` parametresi, bu durumu optimize etmenizi sa\u011flar.<\/p>\n<ul>\n<li>`&#8217;fields&#8217; => &#8216;ids&#8217;`: Sorgunun sadece e\u015fle\u015fen g\u00f6nderilerin ID&#8217;lerinden olu\u015fan bir dizi d\u00f6nd\u00fcrmesini sa\u011flar. Bu, en h\u0131zl\u0131 se\u00e7enektir.<\/li>\n<li>`&#8217;fields&#8217; => &#8216;id=>parent&#8217;`: ID ve ebeveyn ID&#8217;lerinden olu\u015fan ili\u015fkisel bir dizi d\u00f6nd\u00fcr\u00fcr.<\/li>\n<\/ul>\n<p>Sadece ID&#8217;leri \u00e7ekmek, bellek kullan\u0131m\u0131n\u0131 ciddi oranda azalt\u0131r ve sorguyu kayda de\u011fer \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<div class=\"karsilastirma\">\n<table>\n<thead>\n<tr>\n<th>Parametre<\/th>\n<th>Ne Yapar?<\/th>\n<th>Ne Zaman Kullan\u0131lmal\u0131?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>`no_found_rows`<\/b><\/td>\n<td>Toplam g\u00f6nderi say\u0131s\u0131n\u0131 hesaplamay\u0131 atlar.<\/td>\n<td>Sorgu sonu\u00e7lar\u0131nda sayfalama (pagination) kullan\u0131lmayaca\u011f\u0131 zaman.<\/td>\n<\/tr>\n<tr>\n<td><b>`update_post_term_cache`<\/b><\/td>\n<td>Taksonomi verilerinin \u00f6nbelle\u011fe al\u0131nmas\u0131n\u0131 engeller.<\/td>\n<td>D\u00f6ng\u00fc i\u00e7inde `get_the_category()`, `get_the_tags()` gibi fonksiyonlar kullan\u0131lmayacaksa.<\/td>\n<\/tr>\n<tr>\n<td><b>`update_post_meta_cache`<\/b><\/td>\n<td>Meta verilerinin (\u00f6zel alanlar) \u00f6nbelle\u011fe al\u0131nmas\u0131n\u0131 engeller.<\/td>\n<td>D\u00f6ng\u00fc i\u00e7inde `get_post_meta()` gibi fonksiyonlar kullan\u0131lmayacaksa.<\/td>\n<\/tr>\n<tr>\n<td><b>`fields`<\/b><\/td>\n<td>Sadece belirli veri alanlar\u0131n\u0131 (\u00f6rn: ID&#8217;ler) \u00e7eker.<\/td>\n<td>G\u00f6nderinin t\u00fcm nesnesine de\u011fil, sadece ID listesine ihtiya\u00e7 duyuldu\u011funda.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Gecici-Bellek-Caching-Stratejileri-ve-WP-Query-Entegrasyonu\"><\/span>Ge\u00e7ici Bellek (Caching) Stratejileri ve WP_Query Entegrasyonu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>S\u0131k s\u0131k \u00e7al\u0131\u015ft\u0131r\u0131lan ve sonu\u00e7lar\u0131 nadiren de\u011fi\u015fen karma\u015f\u0131k sorgular i\u00e7in en etkili optimizasyon y\u00f6ntemi, sorgu sonu\u00e7lar\u0131n\u0131 ge\u00e7ici belle\u011fe (cache) almakt\u0131r. WordPress&#8217;in Transients API&#8217;\u0131 bu i\u015f i\u00e7in m\u00fckemmeldir. Sorguyu \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, ge\u00e7ici bellekte ilgili anahtarla saklanm\u0131\u015f bir sonu\u00e7 olup olmad\u0131\u011f\u0131n\u0131 kontrol edersiniz. E\u011fer varsa, veritaban\u0131na hi\u00e7 gitmeden do\u011frudan bellekten sonucu al\u0131rs\u0131n\u0131z. Yoksa, sorguyu \u00e7al\u0131\u015ft\u0131r\u0131r ve sonucunu belirli bir s\u00fcre (\u00f6rne\u011fin, 1 saat) i\u00e7in ge\u00e7ici belle\u011fe kaydedersiniz. Bu, sitenizdeki veritaban\u0131 y\u00fck\u00fcn\u00fc dramatik bir \u015fekilde azalt\u0131r ve \u00f6zellikle y\u00fcksek trafikli siteler i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Bu stratejiyi <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/wordpress-hosting.html\" target=\"_blank\">wordpress hosting<\/a> altyap\u0131s\u0131yla birle\u015ftirmek, performans\u0131 en \u00fcst d\u00fczeye \u00e7\u0131kar\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ana-Sorguyu-Degistirme-Sanati-pre-get-posts\"><\/span>Ana Sorguyu De\u011fi\u015ftirme Sanat\u0131: `pre_get_posts`<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress, bir sayfa y\u00fcklendi\u011finde (\u00f6rne\u011fin bir kategori ar\u015fivi, arama sonu\u00e7lar\u0131 sayfas\u0131 veya ana sayfa), hangi g\u00f6nderilerin g\u00f6sterilece\u011fini belirlemek i\u00e7in &#8220;ana sorgu&#8221; (main query) ad\u0131 verilen bir `WP_Query` iste\u011fi \u00e7al\u0131\u015ft\u0131r\u0131r. Bazen bu ana sorgunun varsay\u0131lan davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirmek isteriz. \u00d6rne\u011fin, kategori ar\u015fivlerinde sadece belirli bir etikete sahip yaz\u0131lar\u0131 g\u00f6stermek veya arama sonu\u00e7lar\u0131ndan belirli bir yaz\u0131 tipini hari\u00e7 tutmak gibi. Bu t\u00fcr durumlarda yeni bir `WP_Query` nesnesi olu\u015fturmak yerine, ana sorguya m\u00fcdahale etmek \u00e7ok daha verimli ve do\u011fru bir y\u00f6ntemdir. \u0130\u015fte bu m\u00fcdahale i\u00e7in kullan\u0131lan en g\u00fc\u00e7l\u00fc ara\u00e7 `pre_get_posts` eylemidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"pre-get-posts-Eylemi-Nedir-ve-Ne-Zaman-Kullanilmalidir\"><\/span>`pre_get_posts` Eylemi Nedir ve Ne Zaman Kullan\u0131lmal\u0131d\u0131r?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`pre_get_posts`, WordPress sorgusu veritaban\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lmadan hemen \u00f6nce tetiklenen bir eylem (action hook)&#8217;dir. Bu kancay\u0131 kullanarak, sorgu \u00e7al\u0131\u015ft\u0131r\u0131lmadan \u00f6nce sorgunun parametrelerine (query variables) eri\u015febilir ve onlar\u0131 de\u011fi\u015ftirebilirsiniz. Bu, sorguyu &#8220;\u00e7al\u0131nmadan&#8221; \u00f6nce \u00f6zelle\u015ftirmenize olanak tan\u0131r. `pre_get_posts`, \u00f6zellikle ar\u015fiv sayfalar\u0131, ana sayfa ve arama sonu\u00e7lar\u0131 gibi WordPress&#8217;in otomatik olarak olu\u015fturdu\u011fu sayfalar\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmek i\u00e7in kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Arsiv-Sayfalarini-ve-Arama-Sonuclarini-Kosullu-Olarak-Ozellestirme\"><\/span>Ar\u015fiv Sayfalar\u0131n\u0131 ve Arama Sonu\u00e7lar\u0131n\u0131 Ko\u015fullu Olarak \u00d6zelle\u015ftirme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`pre_get_posts`&#8217;in g\u00fczelli\u011fi, ko\u015fullu etiketlerle (conditional tags) birlikte kullan\u0131labilmesidir. Bu sayede yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikli\u011fin sadece istedi\u011finiz sayfalarda ge\u00e7erli olmas\u0131n\u0131 sa\u011flayabilirsiniz. \u00d6rne\u011fin, sadece &#8216;haberler&#8217; kategorisi ar\u015fivinde, yaz\u0131lar\u0131n ba\u015fl\u0131\u011fa g\u00f6re artan s\u0131rada listelenmesini istiyorsan\u0131z, `is_category(&#8216;haberler&#8217;)` ko\u015fulunu kullanabilirsiniz. Veya arama sonu\u00e7lar\u0131ndan sayfalar\u0131 (`page`) hari\u00e7 tutmak i\u00e7in `is_search()` ko\u015fulunu kullanabilirsiniz.<\/p>\n<p><b>\u00d6rnek:<\/b> Arama sonu\u00e7lar\u0131ndan sayfalar\u0131 hari\u00e7 tutma:<br \/>\n<code>function aramadan_sayfalari_cikar( $query ) {<br \/>\n&nbsp; if ( !is_admin() && $query->is_search() && $query->is_main_query() ) {<br \/>\n&nbsp; &nbsp; $query->set( 'post_type', 'post' );<br \/>\n&nbsp; }<br \/>\n}<br \/>\nadd_action( 'pre_get_posts', 'aramadan_sayfalari_cikar' );<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ana-Sorguyu-Degistirmenin-WP-Query-ile-Yeni-Sorgu-Olusturmaktan-Farki\"><\/span>Ana Sorguyu De\u011fi\u015ftirmenin `WP_Query` ile Yeni Sorgu Olu\u015fturmaktan Fark\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir kategori ar\u015fiv sayfas\u0131n\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmek istedi\u011finizde, mevcut d\u00f6ng\u00fcy\u00fc g\u00f6rmezden gelip yeni bir `WP_Query` nesnesi olu\u015fturmak cazip gelebilir. Ancak bu yanl\u0131\u015f bir yakla\u015f\u0131md\u0131r. \u00c7\u00fcnk\u00fc bu, WordPress&#8217;in zaten yapt\u0131\u011f\u0131 bir i\u015fi (ana sorguyu \u00e7al\u0131\u015ft\u0131rmak) bo\u015fa \u00e7\u0131kar\u0131r ve yerine ikinci, gereksiz bir veritaban\u0131 sorgusu ekler. Ayr\u0131ca, ana sorgu ile \u00e7al\u0131\u015fan sayfalama gibi \u00f6zelliklerin de bozulmas\u0131na neden olur. `pre_get_posts` kullanarak ana sorguyu de\u011fi\u015ftirdi\u011finizde ise tek bir veritaban\u0131 sorgusu \u00e7al\u0131\u015f\u0131r, sayfalama ve di\u011fer t\u00fcm yerle\u015fik WordPress \u00f6zellikleri sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmaya devam eder.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"is-main-query-Kontrolunun-Hayati-Onemi\"><\/span>`is_main_query()` Kontrol\u00fcn\u00fcn Hayati \u00d6nemi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>`pre_get_posts` eylemi, bir sayfa y\u00fcklenirken \u00e7al\u0131\u015fan t\u00fcm `WP_Query` sorgular\u0131 i\u00e7in tetiklenir. Bu, sadece ana sorguyu de\u011fil, ayn\u0131 zamanda men\u00fcler, widget&#8217;lar veya eklentiler taraf\u0131ndan olu\u015fturulan ikincil sorgular\u0131 da i\u00e7erir. E\u011fer yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikli\u011fin sadece sayfan\u0131n ana i\u00e7eri\u011fini etkilemesini istiyorsan\u0131z, fonksiyonunuzun i\u00e7inde mutlaka `$query->is_main_query()` kontrol\u00fcn\u00fc yapmal\u0131s\u0131n\u0131z. Bu kontrol\u00fc eklemeyi unutmak, sitenizin beklenmedik yerlerinde (\u00f6rne\u011fin kenar \u00e7ubu\u011fu widget&#8217;lar\u0131n\u0131zda) istenmeyen de\u011fi\u015fikliklere yol a\u00e7abilir. Ayn\u0131 \u015fekilde, `!is_admin()` kontrol\u00fc de bu de\u011fi\u015fikli\u011fin y\u00f6netim panelindeki sorgular\u0131 etkilemesini \u00f6nlemek i\u00e7in \u00f6nemlidir.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ileri-Seviye-Teknikler-ve-Pratik-Senaryolar\"><\/span>\u0130leri Seviye Teknikler ve Pratik Senaryolar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>`WP_Query`&#8217;nin temel ve geli\u015fmi\u015f parametrelerine hakim olduktan sonra, bu bile\u015fenleri birle\u015ftirerek ger\u00e7ek d\u00fcnya problemlerine y\u00f6nelik son derece g\u00fc\u00e7l\u00fc ve spesifik sorgular olu\u015fturabilirsiniz. Bu b\u00f6l\u00fcmde, `tax_query`, `meta_query` ve di\u011fer parametrelerin bir arada kullan\u0131ld\u0131\u011f\u0131 pratik senaryolar\u0131 ve dikkat edilmesi gereken ileri seviye teknikleri ele alaca\u011f\u0131z.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"tax-query-ve-meta-queryyi-Ayni-Sorguda-Birlestirme\"><\/span>`tax_query` ve `meta_query`&#8217;yi Ayn\u0131 Sorguda Birle\u015ftirme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En yayg\u0131n ileri seviye senaryolardan biri, hem taksonomi hem de meta veri ko\u015fullar\u0131na uyan i\u00e7erikleri bulmakt\u0131r. \u00d6rne\u011fin, &#8216;Elektronik&#8217; kategorisindeki (`tax_query`) fiyat\u0131 5000 TL&#8217;den az olan (`meta_query`) \u00fcr\u00fcnleri listelemek isteyebilirsiniz. `WP_Query` arg\u00fcmanlar\u0131 dizisine hem `tax_query` hem de `meta_query` parametrelerini ekleyerek bu iki ko\u015fulu kolayca birle\u015ftirebilirsiniz. WordPress bu iki ko\u015ful aras\u0131nda varsay\u0131lan olarak `AND` mant\u0131\u011f\u0131yla \u00e7al\u0131\u015f\u0131r, yani her iki ko\u015fulun da sa\u011flanmas\u0131 gerekir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cografi-Konum-Verilerine-Gore-Siralama-ve-Filtreleme\"><\/span>Co\u011frafi Konum Verilerine G\u00f6re S\u0131ralama ve Filtreleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir\u00e7ok modern uygulama, co\u011frafi konum verilerini (enlem ve boylam) kullan\u0131r. Bu verileri yaz\u0131lar\u0131n meta alanlar\u0131nda saklayarak `meta_query` ile co\u011frafi sorgular yapabilirsiniz. \u00d6rne\u011fin, belirli bir enlem ve boylam aral\u0131\u011f\u0131ndaki mekanlar\u0131 filtreleyebilirsiniz. Daha da ileri giderek, Haversine form\u00fcl\u00fc gibi matematiksel hesaplamalarla birle\u015ftirilmi\u015f \u00f6zel SQL sorgular\u0131 olu\u015fturmak i\u00e7in WordPress&#8217;in `posts_clauses` filtresini kullanarak `WP_Query`&#8217;yi geni\u015fletebilir ve belirli bir noktaya olan mesafeye g\u00f6re s\u0131ralama yapabilirsiniz. Bu, &#8220;bana en yak\u0131n restoranlar\u0131 g\u00f6ster&#8221; gibi \u00f6zellikler i\u00e7in temel olu\u015fturur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Populer-Yazilari-Belirlemek-icin-Yorum-Sayisina-Gore-Sorgulama\"><\/span>Pop\u00fcler Yaz\u0131lar\u0131 Belirlemek i\u00e7in Yorum Say\u0131s\u0131na G\u00f6re Sorgulama<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sitenizdeki &#8220;pop\u00fcler&#8221; veya &#8220;en \u00e7ok tart\u0131\u015f\u0131lan&#8221; yaz\u0131lar\u0131 listelemek, kullan\u0131c\u0131 etkile\u015fimini art\u0131rman\u0131n harika bir yoludur. Bu, `WP_Query`&#8217;nin s\u0131ralama parametreleri ile kolayca ger\u00e7ekle\u015ftirilebilir. `orderby` parametresini `comment_count` olarak ve `order` parametresini `DESC` olarak ayarlayarak en \u00e7ok yorum alan yaz\u0131lar\u0131 en \u00fcstte olacak \u015fekilde s\u0131ralayabilirsiniz. Bu sorguyu `date_query` ile birle\u015ftirerek &#8220;son 30 g\u00fcn\u00fcn en pop\u00fcler yaz\u0131lar\u0131&#8221; gibi daha spesifik listeler olu\u015fturabilirsiniz.<\/p>\n<p><code>$args = array(<br \/>\n&nbsp; 'posts_per_page' => 5,<br \/>\n&nbsp; 'orderby' => 'comment_count',<br \/>\n&nbsp; 'order' &nbsp; => 'DESC',<br \/>\n);<br \/>\n$populer_yazilar = new WP_Query( $args );<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Coklu-Dongulerde-Dikkat-Edilmesi-Gerekenler-ve-wp-reset-postdata\"><\/span>\u00c7oklu D\u00f6ng\u00fclerde Dikkat Edilmesi Gerekenler ve `wp_reset_postdata()`<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir sayfa i\u00e7inde birden fazla \u00f6zel `WP_Query` d\u00f6ng\u00fcs\u00fc kulland\u0131\u011f\u0131n\u0131zda, her bir d\u00f6ng\u00fcn\u00fcn bir sonrakini veya sayfan\u0131n ana d\u00f6ng\u00fcs\u00fcn\u00fc etkilememesini sa\u011flamak kritik \u00f6neme sahiptir. Bir `WP_Query` d\u00f6ng\u00fcs\u00fc i\u00e7inde `the_post()` fonksiyonu \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, global `$post` de\u011fi\u015fkeni o anki g\u00f6nderi verisiyle doldurulur. D\u00f6ng\u00fcn\u00fcz bittikten sonra bu global de\u011fi\u015fkeni orijinal durumuna geri d\u00f6nd\u00fcrmezseniz, sayfan\u0131n geri kalan\u0131ndaki \u015fablon etiketleri (`the_title()`, `the_permalink()` vb.) yanl\u0131\u015f verileri g\u00f6sterebilir. Bu sorunu \u00e7\u00f6zmek i\u00e7in, her \u00f6zel `WP_Query` d\u00f6ng\u00fcs\u00fcn\u00fcn sonuna ( `endwhile;` sonras\u0131na) `wp_reset_postdata()` fonksiyonunu eklemek zorunludur. Bu fonksiyon, global `$post` de\u011fi\u015fkenini ana sorgunun mevcut g\u00f6nderisine s\u0131f\u0131rlayarak d\u00f6ng\u00fcler aras\u0131 \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Yuksek-Performansli-WordPress-Projeleriniz-Icin-Neden-IHS-Telekomu-Tercih-Etmelisiniz\"><\/span>Y\u00fcksek Performansl\u0131 WordPress Projeleriniz \u0130\u00e7in Neden \u0130HS Telekom&#8217;u Tercih Etmelisiniz?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Bu makale boyunca inceledi\u011fimiz gibi, `WP_Query` ile olu\u015fturulan karma\u015f\u0131k sorgular, WordPress sitenize inan\u0131lmaz bir esneklik ve g\u00fc\u00e7 katarken, ayn\u0131 zamanda sunucu kaynaklar\u0131 \u00fczerinde ciddi bir talep olu\u015fturabilir. Yava\u015f veritaban\u0131 yan\u0131tlar\u0131, optimize edilmemi\u015f bir altyap\u0131 ve yetersiz \u00f6nbellekleme, en ustaca yaz\u0131lm\u0131\u015f sorgular\u0131n bile kullan\u0131c\u0131ya yava\u015f bir deneyim sunmas\u0131na neden olabilir. \u0130\u015fte bu noktada, projenizin temelini olu\u015fturan <a href=\"https:\/\/www.ihs.com.tr\/web-hosting\/\" target=\"_blank\">hosting<\/a> altyap\u0131s\u0131n\u0131n kalitesi devreye girer. IHS Telekom, \u00f6zellikle yo\u011fun veritaban\u0131 i\u015flemleri gerektiren y\u00fcksek performansl\u0131 WordPress projeleri i\u00e7in tasarlanm\u0131\u015f \u00e7\u00f6z\u00fcmler sunar.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Optimize-Edilmis-Sunucu-Altyapisi-ve-Hizli-Veritabani-Erisimi\"><\/span>Optimize Edilmi\u015f Sunucu Altyap\u0131s\u0131 ve H\u0131zl\u0131 Veritaban\u0131 Eri\u015fimi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Her bir `WP_Query` iste\u011fi, sunucunuzdaki veritaban\u0131na yap\u0131lan bir veya daha fazla SQL sorgusuna d\u00f6n\u00fc\u015f\u00fcr. IHS Telekom&#8217;un <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/\" target=\"_blank\">sunucu<\/a> altyap\u0131s\u0131, SSD diskler ve en son teknoloji i\u015flemcilerle donat\u0131lm\u0131\u015ft\u0131r. Bu, MySQL veritaban\u0131 okuma\/yazma i\u015flemlerinin milisaniyeler i\u00e7inde ger\u00e7ekle\u015fmesini sa\u011flar. Karma\u015f\u0131k `meta_query` ve `tax_query` i\u00e7eren sorgular\u0131n\u0131z bile, bu optimize edilmi\u015f ortamda \u00e7ok daha h\u0131zl\u0131 yan\u0131t vererek sayfa y\u00fcklenme s\u00fcrelerinizi minimuma indirir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gelismis-Onbellekleme-Cozumleri-ile-WP-Query-Yukunun-Azaltilmasi\"><\/span>Geli\u015fmi\u015f \u00d6nbellekleme \u00c7\u00f6z\u00fcmleri ile WP_Query Y\u00fck\u00fcn\u00fcn Azalt\u0131lmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>S\u0131k \u00e7al\u0131\u015ft\u0131r\u0131lan sorgular\u0131n sonu\u00e7lar\u0131n\u0131 her seferinde veritaban\u0131ndan \u00e7ekmek yerine, sunucu seviyesinde \u00f6nbelle\u011fe almak performans\u0131 katbekat art\u0131r\u0131r. IHS Telekom, LiteSpeed Web Server ve LSCache gibi geli\u015fmi\u015f sunucu taraf\u0131 \u00f6nbellekleme \u00e7\u00f6z\u00fcmleri sunar. Bu teknolojiler, `WP_Query` taraf\u0131ndan olu\u015fturulan dinamik i\u00e7eri\u011fi ak\u0131ll\u0131ca \u00f6nbelle\u011fe alarak veritaban\u0131 y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. B\u00f6ylece siteniz, ayn\u0131 anda binlerce ziyaret\u00e7iye bile kesintisiz ve h\u0131zl\u0131 bir hizmet sunabilir. Ayr\u0131ca, projelerinizin ihtiyac\u0131na g\u00f6re <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/vps-server.html\" target=\"_blank\">VPS<\/a> veya <a href=\"https:\/\/www.ihs.com.tr\/sunucu-kiralama\/vds-sunucu.html\" target=\"_blank\">VDS<\/a> gibi daha \u00f6l\u00e7eklenebilir \u00e7\u00f6z\u00fcmlerle altyap\u0131n\u0131z\u0131 g\u00fc\u00e7lendirebilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gelistirici-Dostu-Ortam-ve-Uzman-WordPress-Destegi\"><\/span>Geli\u015ftirici Dostu Ortam ve Uzman WordPress Deste\u011fi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Karma\u015f\u0131k WordPress projeleri geli\u015ftirirken kar\u015f\u0131la\u015f\u0131lan sorunlar, standart hosting sa\u011flay\u0131c\u0131lar\u0131n\u0131n bilgi birikimini a\u015fabilir. IHS Telekom, geli\u015ftiricilerin ihtiya\u00e7lar\u0131n\u0131 anlayan bir yakla\u015f\u0131mla hizmet verir. SSH eri\u015fimi, WP-CLI, Git entegrasyonu gibi geli\u015ftirici dostu ara\u00e7lar sunar. Daha da \u00f6nemlisi, WordPress konusunda uzmanla\u015fm\u0131\u015f teknik destek ekibi, `WP_Query` performans sorunlar\u0131 veya veritaban\u0131 optimizasyonu gibi konularda size yol g\u00f6sterebilir ve sorunlar\u0131n\u0131za h\u0131zl\u0131 \u00e7\u00f6z\u00fcmler \u00fcretebilir. Projenizin g\u00fcvenli\u011fi i\u00e7in <a href=\"https:\/\/www.ihs.com.tr\/ssl\/\" target=\"_blank\">SSL<\/a> sertifikas\u0131 gibi temel ihtiya\u00e7lar da kolayca y\u00f6netilebilir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yogun-Veritabani-Islemlerinde-Guvenilirlik-ve-Olceklenebilirlik\"><\/span>Yo\u011fun Veritaban\u0131 \u0130\u015flemlerinde G\u00fcvenilirlik ve \u00d6l\u00e7eklenebilirlik<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>E-ticaret siteleri, b\u00fcy\u00fck portallar veya karma\u015f\u0131k filtreleme sunan listeleme siteleri gibi projeler, veritaban\u0131 \u00fczerinde s\u00fcrekli bir y\u00fck olu\u015fturur. IHS Telekom&#8217;un sundu\u011fu altyap\u0131, bu t\u00fcr yo\u011fun i\u015flemleri sorunsuz bir \u015fekilde kar\u015f\u0131layacak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Sitenizin trafi\u011fi ve veri y\u00fck\u00fc artt\u0131k\u00e7a, kaynaklar\u0131n\u0131z\u0131 kolayca \u00f6l\u00e7eklendirebilir, projenizin b\u00fcy\u00fcmesine engel olmadan kesintisiz bir hizmet sunmaya devam edebilirsiniz. Her bir <a href=\"https:\/\/www.ihs.com.tr\/domain\/alan-adi-domain-tescili.html\" target=\"_blank\">alan ad\u0131<\/a> i\u00e7in en iyi performans\u0131 sa\u011flamak, g\u00fcvenilir bir altyap\u0131 ile m\u00fcmk\u00fcnd\u00fcr.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress, i\u00e7erik y\u00f6netim sistemleri aras\u0131nda esnekli\u011fi ve g\u00fcc\u00fcyle \u00f6ne \u00e7\u0131kar. Bu g\u00fcc\u00fcn temel ta\u015flar\u0131ndan biri de veritaban\u0131ndaki i\u00e7erikleri hassas bir \u015fekilde \u00e7ekip&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[397],"tags":[],"class_list":["post-16674","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=16674"}],"version-history":[{"count":1,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16674\/revisions"}],"predecessor-version":[{"id":16684,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/posts\/16674\/revisions\/16684"}],"wp:attachment":[{"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=16674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=16674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ihs.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=16674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}