Di WordPress, URL tidak memetakan ke rute. Mereka memetakan ke permintaan basis data.
Saat menggunakan WordPress dalam mode permalinks "default", Anda memiliki satu set variabel dalam permintaan URL utama, seperti? P = 1 atau? Halaman = 234 dan sebagainya. Ada juga? S = pencarian dan banyak lainnya.
Jika Anda menggunakan permalink "cantik", maka seperangkat aturan besar yang disebut "aturan penulisan ulang" dibuat yang secara langsung memetakan berbagai pola URL ke set parameter URL yang sama. Jadi URL seperti / 2014/04/12 / contoh akan dipetakan ke? Tahun = 2014 & bulan = 04 & hari = 12 & postname = contoh atau serupa. Jadi yang berikut berlaku untuk ini juga, setelah pemetaan ini dilakukan.
Variabel-variabel ini pada dasarnya mengendalikan instance utama dari kelas WP_Query. Kelas WP_Query menampung semua informasi yang membangun kueri basis data untuk mendapatkan "kiriman" dari basis data. Berbagai parameter yang dilewatkan ke dalamnya mengontrol jenis permintaan apa yang dibuatnya dan data apa yang didapatnya.
Lihat, semua yang dapat ditampilkan oleh WordPress pada dasarnya adalah "posting". Blog adalah serangkaian posting dalam urutan berdasarkan waktu terbalik. "Halaman" adalah pos statis dengan nama yang ditentukan. "Tipe posting khusus" persis seperti apa itu, "posting" dengan tipe kustom yang Anda tentukan. Semua kueri utama untuk menampilkan apa pun di WordPress mendapatkan beberapa bagian posting dari tabel wp_posts.
WP_Query adalah apa artinya itu. Dan parameter dari URL dikirim langsung ke permintaan utama itu dan digunakan di sana.
Tema kemudian menentukan templat apa yang akan digunakan berdasarkan pada permintaan apa yang muncul. Jika Anda meminta / kategori / contoh, maka itu menjadi? Category_name = contoh yang berarti bahwa array $ wp_query-> query_vars utama akan mendapatkan informasi itu, dan WP_Query akan mengeluarkan posting X terakhir untuk kategori "example", dan itu akan mengatur flag is_category menjadi true.
Template-loader akan berjalan setelah ini, lihat is_category () mengembalikan true, dan memutuskan untuk memilih templat kategori, sehingga ia akan mencari kategori-example.php dan kembali ke category.php dan seterusnya, sesuai dengan Templat Hirarki.
Jadi, pertanyaannya jika Anda ingin mengubah cara kerja URL itu sederhana: Apakah Anda ingin mengubah URL, atau dipetakan ke mana? Karena URL tidak dipetakan ke fungsi, mereka dipetakan ke parameter yang mengontrol kueri. Jika Anda ingin URL menyesuaikan permintaan utama itu, maka itu proses yang sedikit berbeda daripada jika Anda ingin URL khusus untuk menjalankan beberapa kode khusus yang sama sekali berbeda.
Dan untuk menjawab pertanyaan spesifik Anda di komentar: "tidakkah ada kasus di mana Anda sebenarnya tidak ingin menampilkan tulisan?" Tidak, tidak ada. Semuanya adalah pos. Semua konten disimpan dalam posting. Jika Anda ingin menyimpan konten di tempat lain dan menjadi berbeda, maka Anda dapat melakukannya, tetapi itu lebih sulit karena, jujur, biasanya tidak diperlukan. Jika Anda memiliki konten khusus, buat jenis posting khusus, simpan konten Anda sebagai posting dengan jenis itu, petakan pola URL-nya. Mudah.