{"id":12380145,"date":"2026-03-20T23:07:17","date_gmt":"2026-03-20T15:07:17","guid":{"rendered":"https:\/\/www.likacloud.com\/knowledge\/wp_query-%e5%85%a8%e9%9d%a2%e8%a7%a3%e6%9e%90%ef%bc%9a%e7%b2%be%e5%87%86%e6%8e%a7%e5%88%b6-wordpress-%e4%b8%bb%e9%a2%98%e5%86%85%e5%ae%b9%e5%be%aa%e7%8e%af\/"},"modified":"2026-06-05T01:16:24","modified_gmt":"2026-06-04T17:16:24","slug":"wp-query-complete-guide-wordpress-theme-content-loop","status":"publish","type":"knowledge_post","link":"https:\/\/www.likacloud.com\/id\/knowledge\/wordpress\/wp-query-complete-guide-wordpress-theme-content-loop\/","title":{"rendered":"WP_Query: Analisis Lengkap \u2013 Kontrol Presisi atas Pengulangan Konten Tema WordPress"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Dalam pengembangan tema WordPress, mekanisme pengulangan konten (content looping) merupakan inti dari sistem yang menggerakkan tampilan halaman secara dinamis. Meskipun siklus utama (main loop) yang disediakan oleh WordPress sederhana dan mudah digunakan, ia seringkali tidak cukup efektif untuk mengatasi kebutuhan seperti desain halaman utama yang terdiri dari banyak blok, penampilan jenis artikel yang disesuaikan, atau fitur penyaringan yang kompleks. Pada saat seperti ini, sangat penting untuk memahami secara mendalam mekanisme kerja dari sistem pengulangan konten tersebut. <code data-no-auto-translation=\"\">WP_Query<\/code> Kelas menjadi kunci bagi para pengembang untuk mengontrol konten dengan presisi. Kelas tersebut memungkinkan Anda untuk mengambil artikel, halaman, atau jenis artikel kustom dari basis data yang memenuhi kondisi tertentu, serta sepenuhnya mengontrol cara konten tersebut ditampilkan. Hal ini merupakan fondasi penting dalam membangun fitur tema yang canggih.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Memahami sistem parameter inti dari WP_Query<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Keunggulan utamanya terletak pada kemampuannya untuk menerima array parameter yang besar, yang memungkinkan penyaringan konten dalam basis data secara lebih detail. Memahami kategori dan cara penggunaan parameter-parameter tersebut merupakan langkah pertama dalam membangun kueri yang efisien.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Parameter Pencarian Dasar dan Pemagangan Halaman (Basic Search and Paging Parameters)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Parameter yang paling sering digunakan adalah untuk mendefinisikan rentang dasar dari pencarian (query) dan pengaturan halaman (pagination). Misalnya,<code data-no-auto-translation=\"\">post_type<\/code> Parameter tersebut menentukan bahwa objek yang akan dicari adalah artikel.<code data-no-auto-translation=\"\">post<\/code>), halaman (<code data-no-auto-translation=\"\">page<\/code>Atau jenis artikel kustom apa pun yang telah terdaftar.<code data-no-auto-translation=\"\">posts_per_page<\/code> \u548c <code data-no-auto-translation=\"\">paged<\/code> Maka bersama-sama mengendalikan logika pemagangan halaman (pagination).<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>\u63a8\u8350\u9605\u8bfb <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/how-to-develop-a-high-quality-wordpress-theme-from-scratch\/\">Pelajari secara langsung cara mengembangkan tema WordPress berkualitas tinggi dari nol.<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    \/\/ \u6307\u5b9a\u67e5\u8be2\u4ea7\u54c1\u7c7b\u578b\n    &#039;post_type&#039;      =&gt; &#039;product&#039;,\n    \/\/ \u6bcf\u9875\u663e\u793a8\u4e2a\u9879\u76ee\n    &#039;posts_per_page&#039; =&gt; 8,\n    \/\/ \u83b7\u53d6\u7b2c2\u9875\u7684\u5185\u5bb9\n    &#039;paged&#039;          =&gt; 2,\n    \/\/ \u6309\u7167\u53d1\u5e03\u65e5\u671f\u964d\u5e8f\u6392\u5217\n    &#039;orderby&#039;        =&gt; &#039;date&#039;,\n    &#039;order&#039;          =&gt; &#039;DESC&#039;,\n);\n$product_query = new WP_Query( $args );<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Klasifikasi dan Parameter Pencarian Metadata<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk kriteria penyaringan yang lebih kompleks,<code data-no-auto-translation=\"\">tax_query<\/code> \u548c <code data-no-auto-translation=\"\">meta_query<\/code> Parameter sangat penting.<code data-no-auto-translation=\"\">tax_query<\/code> Digunakan untuk memproses permintaan (query) terkait kategori (Category), tag (Tag), serta sistem klasifikasi (taxonomy) yang disesuaikan (custom taxonomy). <code data-no-auto-translation=\"\">meta_query<\/code> Fungsi tersebut digunakan untuk mencari artikel yang dilengkapi dengan bidang kustom tertentu (Post Meta) beserta nilainya, misalnya untuk mencari semua produk yang \u201cada stok\u201d atau \u201cdiberikan diskon\u201d.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/id\/tolink\/ultahost-wordpress-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      UltaHost \u2013 Hosting untuk WordPress    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Jaminan pengembalian uang dalam 30 hari, bandwidth dan basis data yang tidak terbatas, perlindungan DDoS gratis, diskon 50% untuk pembelian selama 3 tahun (dari harga normal: 50%).<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/ultahost-wordpress-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251227020448.webp\" alt=\"LOGO UltaHost.\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229052118.webp\" alt=\"LOGO UltaHost.\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/ultahost-wordpress-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       halaman akses    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    &#039;post_type&#039; =&gt; &#039;book&#039;,\n    &#039;tax_query&#039; =&gt; array(\n        array(\n            &#039;taxonomy&#039; =&gt; &#039;genre&#039;, \/\/ \u81ea\u5b9a\u4e49\u5206\u7c7b\u6cd5\uff1a\u4e66\u7c4d\u7c7b\u578b\n            &#039;field&#039;    =&gt; &#039;slug&#039;,\n            &#039;terms&#039;    =&gt; array( &#039;science-fiction&#039;, &#039;fantasy&#039; ),\n            &#039;operator&#039; =&gt; &#039;IN&#039;, \/\/ \u67e5\u8be2\u7c7b\u578b\u4e3a\u201c\u79d1\u5e7b\u201d\u6216\u201c\u5947\u5e7b\u201d\u7684\u4e66\u7c4d\n        ),\n    ),\n    &#039;meta_query&#039; =&gt; array(\n        array(\n            &#039;key&#039;     =&gt; &#039;_price&#039;,\n            &#039;value&#039;   =&gt; 50,\n            &#039;compare&#039; =&gt; &#039;&lt;&#039;,\n            &#039;type&#039;    =&gt; &#039;NUMERIC&#039;, \/\/ \u67e5\u8be2\u4ef7\u683c\u4f4e\u4e8e50\u7684\u4e66\u7c4d\n        ),\n    ),\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Membangun dan menjalankan siklus kueri kustom<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah parameter pencarian telah didefinisikan dengan baik, langkah selanjutnya adalah menginstansiasikannya (membuat objek yang menggunakan parameter tersebut). <code data-no-auto-translation=\"\">WP_Query<\/code> Dan hasilnya diulang-ulang secara aman. Proses ini memiliki pola standar, dan mengikuti pola tersebut sangat penting untuk menjaga stabilitas lingkungan variabel global.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Struktur siklus pencarian standar<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sebuah siklus kueri kustom yang kuat harus mencakup empat langkah: menginisialisasi objek kueri, memeriksa apakah ada hasil, mengulang proses penampilan konten, dan mengatur ulang data global. Di dalam siklus tersebut, berbagai operasi dapat dilakukan. <code data-no-auto-translation=\"\">the_post()<\/code> Metode dan serangkaian tag template (seperti\u2026) <code data-no-auto-translation=\"\">the_title()<\/code>, <code data-no-auto-translation=\"\">the_content()<\/code>Gunakan fungsi yang tersedia untuk mengambil informasi dari setiap artikel dan kemudian tampilkan data tersebut dalam format yang diinginkan.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ 1. \u521d\u59cb\u5316\n$featured_args = array( &#039;category_name&#039; =&amp;gt; &#039;featured&#039;, &#039;posts_per_page&#039; =&amp;gt; 3 );\n$featured_query = new WP_Query( $featured_args );\n\n\/\/ 2. \u68c0\u67e5\nif ( $featured_query-&amp;gt;have_posts() ) {\n    echo &#039;&lt;section class=&quot;featured-posts&quot;&gt;&#039;;\n    \/\/ 3. \u5faa\u73af\n    while ( $featured_query-&amp;gt;have_posts() ) {\n        $featured_query-&amp;gt;the_post();\n        \/\/ \u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u6a21\u677f\u6807\u7b7e\n        echo &#039;&lt;article&gt;&#039;;\n        echo &#039;&lt;h2&gt;&lt;a href=&quot;\/id\/&#039; . esc_url( get_permalink() ) . &#039;\/&quot;&gt;&#039;`.get_the_title().`&#039;&lt;\/a&gt;&lt;\/h2&gt;&#039;;\n        the_excerpt();\n        echo &#039;&lt;\/article&gt;&#039;;\n    }\n    echo &#039;&lt;\/section&gt;&#039;;\n} else {\n    \/\/ \u5982\u679c\u6ca1\u6709\u627e\u5230\u6587\u7ae0\n    echo &#039;&lt;p&gt;Tidak ada konten terpilih saat ini.&lt;\/p&gt;&#039;\/\/ 3. Simpan perubahan dan keluar dari editor. \nwp_insert_post( $post );  \nwp_redirect( get_site_url() );  \nexit; \n\n\/\/ 4. Reset (langkah penting!). \nwp_reset_postdata();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mengolah metainformasi dalam hasil pencarian<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Objek tersebut tidak hanya menyediakan data artikel, tetapi juga mengandung metainformasi mengenai permintaan (query) itu sendiri, yang sangat berguna dalam proses pengembangan.<code data-no-auto-translation=\"\">$query-&gt;max_num_pages<\/code> Properti tersebut dapat digunakan untuk mendapatkan jumlah halaman total dari hasil pencarian, yang berguna dalam membangun navigasi halaman yang disesuaikan (custom pagination).<code data-no-auto-translation=\"\">$query-&gt;found_posts<\/code> Atribut tersebut akan mengembalikan total jumlah artikel yang memenuhi kriteria, bukan hanya jumlah artikel di halaman saat ini.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ \u5728\u5faa\u73af\u4e4b\u540e\uff0c\u53ef\u4ee5\u83b7\u53d6\u8fd9\u4e9b\u4fe1\u606f\n$total_posts = $featured_query-&amp;gt;found_posts;\n$total_pages = $featured_query-&amp;gt;max_num_pages;\n\necho &quot;&lt;p&gt;Ditemukan total {$total_posts} artikel terpilih, yang terbagi menjadi {$total_pages} halaman.&lt;\/p&gt;&quot;Berdasarkan informasi ini, Anda dapat membuat tautan halaman (pagination link) yang disesuaikan dengan kebutuhan Anda.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mengoptimalkan kinerja pencarian dan strategi penggunaan cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Seiring dengan bertambahnya konten situs web dan meningkatnya kompleksitas permintaan (query), kinerja menjadi masalah yang tidak dapat diabaikan. <code data-no-auto-translation=\"\">WP_Query<\/code> Hal ini dapat menyebabkan beban pada basis data menjadi terlalu tinggi, sehingga memperlambat kecepatan penampilan halaman.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>\u63a8\u8350\u9605\u8bfb <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/professional-wordpress-theme-development-responsive-website\/\">Analisis Mendalam tentang Pengembangan Tema WordPress Profesional: Membangun Situs Web Responsif dari Nol<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h3 class=\"wp-block-heading\">Menggunakan API Transients untuk menyimpan hasil pencarian dalam cache<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Untuk permintaan yang tidak sering berubah (seperti \u201cArtikel Terpopuler Bulan Ini\u201d atau daftar \u201cRekomendasi Editor\u201d), menggunakan API Transients di WordPress merupakan pilihan yang sangat baik. API ini dapat menyimpan hasil permintaan atau bagian HTML yang dihasilkan secara langsung ke dalam basis data atau cache memori, sehingga dapat dibaca langsung selama masa berlakunya, sehingga menghindari eksekusi ulang permintaan database yang kompleks.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ \u5b9a\u4e49\u4e00\u4e2a\u552f\u4e00\u7684\u77ac\u6001\u952e\u540d\n$transient_key = &#039;mytheme_hot_products_week_42&#039;;\n\n\/\/ \u5c1d\u8bd5\u4ece\u7f13\u5b58\u4e2d\u83b7\u53d6\n$cached_html = get_transient( $transient_key );\n\nif ( false === $cached_html ) {\n    \/\/ \u7f13\u5b58\u4e0d\u5b58\u5728\u6216\u5df2\u8fc7\u671f\uff0c\u6267\u884c\u67e5\u8be2\n    $args = array(\n        &#039;post_type&#039;      =&gt; &#039;product&#039;,\n        &#039;meta_key&#039;       =&gt; &#039;sales_count&#039;,\n        &#039;orderby&#039;        =&gt; &#039;meta_value_num&#039;,\n        &#039;order&#039;          =&gt; &#039;DESC&#039;,\n        &#039;posts_per_page&#039; =&gt; 5,\n    );\n    $hot_query = new WP_Query( $args );\n\nob_start(); \/\/ \u5f00\u542f\u8f93\u51fa\u7f13\u51b2\n    \/\/ ... \u5faa\u73af\u8f93\u51fa\u6587\u7ae0HTML\u5230\u7f13\u51b2\u533a\n    if ( $hot_query-&gt;have_posts() ) {\n        while ( $hot_query-&gt;have_posts() ) { $hot_query-&gt;the_post();\n            \/\/ \u8f93\u51fa\u5217\u8868\u9879\n        }\n    }\n    wp_reset_postdata();\n    $cached_html = ob_get_clean(); \/\/ \u83b7\u53d6\u7f13\u51b2\u5185\u5bb9\u5e76\u6e05\u7a7a\n\n\/\/ \u5c06\u7ed3\u679c\u7f13\u5b5812\u5c0f\u65f6\n    set_transient( $transient_key, $cached_html, 12 * HOUR_IN_SECONDS );\n}\n\n\/\/ \u8f93\u51fa\u7f13\u5b58\u6216\u521a\u751f\u6210\u7684\u5185\u5bb9\necho $cached_html;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Gunakan \u2018posts_per_page\u2019 dan \u2018offset\u2019 dengan hati-hati.\u2019<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Terkadang, para pengembang ingin melewatkan N artikel pertama (misalnya, saat menampilkan \u201cLebih Banyak Berita\u201d di sidebar, mereka ingin melewatkan artikel utama). Cara yang paling langsung untuk melakukannya adalah dengan menggunakan kode yang sesuai. <code data-no-auto-translation=\"\">offset<\/code> Parameter tersebut akan digunakan bersama dengan fitur pemagangan (pemilahan data berdasarkan halaman).<code data-no-auto-translation=\"\">paged<\/code>Konflik tersebut menyebabkan kesalahan dalam perhitungan halaman (paging). Pendekatan yang lebih disarankan adalah menggunakan kode di dalam siklus (loop). <code data-no-auto-translation=\"\">$query-&gt;current_post<\/code> Gunakan atribut tersebut untuk melakukan penilaian kondisional, atau gunakannya saat memodifikasi kueri utama. <code data-no-auto-translation=\"\">pre_get_posts<\/code> Menggunakan \u201chook\u201d untuk melakukan pemrosesan logika yang lebih kompleks, bukan hanya sekadar menggunakan mekanisme \u201coffset\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mengubah kueri utama dengan menggunakan mekanisme \u201chooking\u201d.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dalam banyak kasus, Anda tidak perlu membuat siklus yang sepenuhnya baru dan independen, melainkan ingin memodifikasi query utama yang dihasilkan oleh WordPress untuk halaman tersebut. Misalnya, Anda ingin halaman arsip dari suatu kategori menampilkan artikel standar serta jenis artikel khusus yang telah Anda buat sendiri. Membuat siklus tambahan dan menggantikan seluruh query utama merupakan pendekatan yang tidak efisien dan merepotkan. Dalam situasi seperti ini, Anda sebaiknya menggunakan\u2026 <code data-no-auto-translation=\"\">pre_get_posts<\/code> Action Hook.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/id\/tolink\/hosting-shared-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      hosting.com hosting bersama    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Kinerja tinggi, dilengkapi dengan CPU AMD EPYC, penyimpanan SSD NVMe, dan LiteSpeed, dukungan internal ahli 24 jam sehari, langkah-langkah keamanan canggih termasuk SSL, brute force, malware, dan perlindungan DDoS, menghemat hingga 731 TB\/bulan.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/hosting-shared-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/09\/20250901222940.svg\" alt=\"LOGO hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228220957.webp\" alt=\"LOGO hosting.com\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/hosting-shared-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       halaman akses    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Gunakan fungsi `pre_get_posts` dalam berkas `functions.php`.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Letakkan logika modifikasi di dalam topik (tema) tersebut. <code data-no-auto-translation=\"\">functions.php<\/code> Dalam file tersebut, perilaku kueri utama dapat diubah dengan cara yang elegan dan efisien. Kuncinya adalah dengan menggunakan tag kondisional (seperti\u2026) <code data-no-auto-translation=\"\">is_category()<\/code>, <code data-no-auto-translation=\"\">is_tag()<\/code>) dan pemeriksaan <code data-no-auto-translation=\"\">$query-&gt;is_main_query()<\/code> Pastikan modifikasi hanya dilakukan dalam konteks yang tepat, agar tidak mempengaruhi antarmuka manajemen backend atau proses pencarian lainnya.<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">add_action( &#039;pre_get_posts&#039;, &#039;mytheme_adjust_main_query&#039; );\nfunction mytheme_adjust_main_query( $query ) {\n    \/\/ \u4ec5\u5728\u524d\u7aef\u3001\u4e14\u662f\u4e3b\u67e5\u8be2\u3001\u4e14\u662f\u201c\u65b0\u95fb\u201d\u5206\u7c7b\u9875\u65f6\u6267\u884c\n    if ( ! is_admin() &amp;&amp; $query-&gt;is_main_query() &amp;&amp; is_category( &#039;news&#039; ) ) {\n        \/\/ \u8ba9\u4e3b\u67e5\u8be2\u540c\u65f6\u83b7\u53d6\u201cpost\u201d\u548c\u201cpress-release\u201d\u4e24\u79cd\u6587\u7ae0\u7c7b\u578b\n        $query-&gt;set( &#039;post_type&#039;, array( &#039;post&#039;, &#039;press-release&#039; ) );\n        \/\/ \u6309\u81ea\u5b9a\u4e49\u7684\u201c\u91cd\u8981\u6027\u201d\u5143\u5b57\u6bb5\u6392\u5e8f\n        $query-&gt;set( &#039;meta_key&#039;, &#039;importance_rating&#039; );\n        $query-&gt;set( &#039;orderby&#039;, &#039;meta_value_num&#039; );\n        $query-&gt;set( &#039;order&#039;, &#039;DESC&#039; );\n    }\n\n\/\/ \u5728\u641c\u7d22\u9875\uff0c\u5c06\u641c\u7d22\u8303\u56f4\u6269\u5c55\u5230\u201c\u4ea7\u54c1\u201d\u81ea\u5b9a\u4e49\u6587\u7ae0\u7c7b\u578b\n    if ( ! is_admin() &amp;&amp; $query-&gt;is_main_query() &amp;&amp; $query-&gt;is_search() ) {\n        $current_types = $query-&gt;get( &#039;post_type&#039; );\n        if ( empty( $current_types ) ) {\n            \/\/ \u9ed8\u8ba4\u641c\u7d22\u53ea\u5305\u542b\u2018post\u2019\uff0c\u6211\u4eec\u52a0\u5165\u2018product\u2019\n            $query-&gt;set( &#039;post_type&#039;, array( &#039;post&#039;, &#039;page&#039;, &#039;product&#039; ) );\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Menyimpulkan.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">WP_Query<\/code> Ini adalah kunci untuk mengoptimalkan potensi penampilan konten tema WordPress. Dari daftar artikel yang sederhana hingga halaman agregat yang kompleks yang bergantung pada kategori ganda, metadata, tanggal, dan kondisi lainnya, fitur ini menyediakan fleksibilitas dan kontrol yang luar biasa. Pelajari dengan baik sistem parameter-nya, ikuti pola standar \u201cinisialisasi-pemeriksaan-ulang-ulang-pemulihan\u201d, dan gunakan dengan bijak. <code data-no-auto-translation=\"\">pre_get_posts<\/code> Mengoptimalkan kueri utama dan menerapkan strategi caching untuk menjaga kinerja adalah keterampilan yang wajib dimiliki oleh setiap pengembang tema tingkat lanjut. Melalui praktik, Anda akan mampu membuat solusi penampilan konten dinamis yang efisien dan mudah dikelola, serta mampu merespons berbagai kebutuhan bisnis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ - Pertanyaan yang Sering Diajukan.<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Jika hasil dari WP_Query kosong, bagaimana cara melakukan debugging (pemecahan masalah)?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pertama-tama, periksa apakah ejaan dan nilai dalam array parameter benar, terutama nama klasifikasi, identifikasi jenis artikel, dan lainnya. Kedua, gunakan\u2026 <code data-no-auto-translation=\"\">print_r( $query-&gt;request );<\/code> Setelah objek kueri diinisialisasi, cetakkan pernyataan SQL yang sebenarnya dieksekusi; hal ini akan langsung mengungkapkan kondisi kueri yang digunakan. Akhirnya, pastikan bahwa konten yang Anda cari memang ada dan dalam status \u201cditerbitkan\u201d (published).<code data-no-auto-translation=\"\">publish<\/code>), default <code data-no-auto-translation=\"\">WP_Query<\/code> Fungsi ini tidak memungkinkan untuk mencari artikel draft (yang masih dalam proses penulisan) maupun artikel yang dijadwalkan untuk diterbitkan pada waktu tertentu.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>\u63a8\u8350\u9605\u8bfb <a href=\"https:\/\/www.likacloud.com\/es\/knowledge\/wordpress\/wordpress-theme-development-custom-theme-guide-2026\/\">Pengembangan Tema WordPress: Panduan Lengkap untuk Membuat Tema Khusus dari Nol<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h3 class=\"wp-block-heading\">WP_Query atau get_posts, mana yang sebaiknya dipilih?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code data-no-auto-translation=\"\">get_posts<\/code> Digunakan di dalam fungsi. <code data-no-auto-translation=\"\">WP_Query<\/code>Namun, secara default, fungsi tersebut mengembalikan sebuah array objek artikel, tanpa mengubah variabel global apa pun. <code data-no-auto-translation=\"\">$post<\/code>Oleh karena itu, biasanya tidak diperlukan untuk melakukan pemanggilan (call) tertentu. <code data-no-auto-translation=\"\">wp_reset_postdata()<\/code>Ini lebih ringan dan cocok untuk keperluan pengambilan data yang sederhana, seperti membuat daftar tautan.<code data-no-auto-translation=\"\">WP_Query<\/code> Objek tersebut memiliki fungsi yang lebih lengkap; ia memelihara metadata seperti halaman pengaturan (pagination) dan jumlah total data. Siklus (loop) yang digunakan dapat mengatur variabel global dengan benar untuk mendukung proses pengolahan data tersebut. <code data-no-auto-translation=\"\">the_title()<\/code> Tag-tag template seperti ini merupakan pilihan utama untuk membangun konten yang bersifat berulang (berulang-ulang) dalam template tema.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bagaimana cara mencari artikel dari penulis tertentu atau dengan tanggal tertentu?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dapat digunakan. <code data-no-auto-translation=\"\">author<\/code> Parameter (menerima ID penulis, nama pengguna, atau nama panggilan pengguna) dan <code data-no-auto-translation=\"\">date_query<\/code> Parameter.<code data-no-auto-translation=\"\">date_query<\/code> Sangat kuat; memungkinkan Anda untuk melakukan pencarian berdasarkan tahun\/bulan\/hari tertentu, rentang tanggal, atau tanggal relatif (seperti \u201c30 hari terakhir\u201d).<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/id\/tolink\/interserver-webhosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      Hosting bersama InterServer.    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Hosting bersama seharga $2,50 USD per bulan, diskon $0,1 USD untuk bulan pertama dengan kode promo tryinterserver, serta 461 skrip aplikasi cloud yang dapat diinstal dengan sekali klik.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/interserver-webhosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228045033.svg\" alt=\"Logo InterServer.\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229054830.webp\" alt=\"Logo InterServer.\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/id\/tolink\/interserver-webhosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       halaman akses    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">$args = array(\n    &#039;author&#039; =&gt; 5, \/\/ \u67e5\u8be2ID\u4e3a5\u7684\u4f5c\u8005\u7684\u6587\u7ae0\n    &#039;date_query&#039; =&gt; array(\n        array(\n            &#039;after&#039; =&gt; &#039;2026-01-01&#039;, \/\/ 2026\u5e741\u67081\u65e5\u4e4b\u540e\n            &#039;before&#039; =&gt; &#039;2026-12-31&#039;, \/\/ 2026\u5e7412\u670831\u65e5\u4e4b\u524d\n            &#039;inclusive&#039; =&gt; true, \/\/ \u5305\u542b\u8d77\u6b62\u65e5\u671f\n        ),\n    ),\n);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mengapa harus memanggil fungsi `wp_reset_postdata()`?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 <code data-no-auto-translation=\"\">WP_Query<\/code> Dalam siklus tersebut,<code data-no-auto-translation=\"\">the_post()<\/code> Metode tersebut akan mengatur pengaturan secara global (diterapkan di seluruh sistem). <code data-no-auto-translation=\"\">$post<\/code> Variabel. Jika tidak direset, kode selanjutnya (misalnya bagian lain dari siklus utama, komponen sidebar, atau fitur tertentu dari plugin) mungkin akan menggunakan nilai variabel tersebut yang telah dimodifikasi secara salah. <code data-no-auto-translation=\"\">$post<\/code> Objek tersebut menyebabkan konten yang salah ditampilkan atau menimbulkan perilaku yang tidak diinginkan.<code data-no-auto-translation=\"\">wp_reset_postdata()<\/code> Fungsi dari\u2026 adalah untuk\u2026 <code data-no-auto-translation=\"\">$post<\/code> Memulihkan artikel tersebut ke dalam kueri utama (main query) sangat penting untuk memastikan konsistensi lingkungan global (global environment). Ini merupakan langkah keamanan yang sangat esensial.<\/p>","protected":false},"excerpt":{"rendered":"<p>Artikel ini membahas secara mendalam kelas WP_Query dalam pengembangan WordPress, yang merupakan alat penting untuk melampaui siklus utama bawaan dan mengontrol konten dengan lebih akurat. Dijelaskan secara rinci sistem parameter inti kelas WP_Query, termasuk cara melakukan pencarian dasar, penomoran halaman (pemagangan), serta penggunaan tax_query dan meta_query untuk melakukan penyaringan yang lebih kompleks. Selain itu, diberikan juga metode standar untuk membuat siklus pencarian kustom, sehingga artikel ini menjadi panduan praktis dalam pembuatan fitur tema tingkat lanjut.<\/p>","protected":false},"author":7,"featured_media":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[806,3369,804,2811,3370],"knowledge_category":[280],"class_list":["post-12380145","knowledge_post","type-knowledge_post","status-publish","hentry","tag-wordpress-development","tag-wp-query","tag-theme-development","tag-content-loop","tag-database-queries","knowledge_category-wordpress"],"acf":{"site_seo_keywords":"WP_Query, WordPress \u4e3b\u9898\u5f00\u53d1, \u5185\u5bb9\u5faa\u73af, \u81ea\u5b9a\u4e49\u67e5\u8be2, \u5206\u7c7b\u6cd5\u67e5\u8be2, \u5143\u6570\u636e\u67e5\u8be2, \u7cbe\u51c6\u63a7\u5236\u6587\u7ae0\u8f93\u51fa, WordPress \u9ad8\u7ea7\u529f\u80fd"},"_links":{"self":[{"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/knowledge_posts\/12380145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/knowledge_posts"}],"about":[{"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/types\/knowledge_post"}],"author":[{"embeddable":true,"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/users\/7"}],"version-history":[{"count":1,"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/knowledge_posts\/12380145\/revisions"}],"predecessor-version":[{"id":12406424,"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/knowledge_posts\/12380145\/revisions\/12406424"}],"wp:attachment":[{"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/media?parent=12380145"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/tags?post=12380145"},{"taxonomy":"knowledge_category","embeddable":true,"href":"https:\/\/www.likacloud.com\/id\/wp-json\/wp\/v2\/knowledge_category?post=12380145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}