Beberapa taksonomi dalam URL
Bagaimana cara menambahkan beberapa taksonomi ke URL memiliki yang berikut ini:
- Jenis Posting: produk
- Taksonomi: product_type
- Taksonomi: product_brand
Menambahkan produk baru dan memilih jenis dan merek untuk produk ini:
Saat menambahkan produk baru , ada dua kotak taksonomi (product_type dan product_brand). Sebut postingan baru ini Test Product 1 . Hal pertama yang ingin kami lakukan adalah mencentang jenis produk yang saya tangani, katakanlah ponsel . Selanjutnya, saya ingin mencentang merek milik produk tersebut, katakanlah samsung.
Sekarang " Produk Uji 1 " dikaitkan dengan jenis "ponsel" dan merek "samsung" .
Hasil akhir yang diinginkan adalah:
/ produk
»Lihat semua posting khusus/ produk / ponsel
»Lihat semua posting kustom dengan ponsel taksonomi/ produk / ponsel-ponsel / samsung /
»Lihat semua posting kustom di mana taksonomi adalah ponsel DAN samsung/ produk / telepon seluler / samsung / tes-produk-1
»Lihat produk (pos khusus tunggal)
Pertanyaan
Bagaimana seseorang memungkinkan ini terjadi? Pikiran awal saya menggunakan satu taksonomi, memiliki "ponsel" sebagai istilah induk dari "samsung" . Sebenarnya menambahkan taksonomi dan ketentuannya tidak begitu sulit. Tapi itu menyebabkan banyak masalah lain, beberapa terkenal, beberapa tidak begitu banyak. Pokoknya itu tidak berfungsi seperti itu karena memberikan 404 masalah dan WP tidak akan mengizinkan hal-hal tertentu.
WP.org »taksonomi-arsip-templat
Ini menuntun saya untuk memikirkan kembali struktur, harus meninggalkan taksonomi dan ketentuannya dan saya pikir; mengapa tidak membuat taksonomi kedua, dan kaitkan jenis posting dengan itu dan menambahkannya ke url?
Pertanyaan yang bagus memang, tapi bagaimana?
Jawaban:
Ini tentu dimungkinkan dengan memanfaatkan beberapa aturan penulisan ulang Anda sendiri sampai batas tertentu. The WP_Rewrite API paparan fungsi yang memungkinkan Anda untuk menambahkan aturan penulisan ulang (atau 'peta') untuk mengkonversi permintaan untuk query.
Ada prasyarat untuk menulis aturan penulisan ulang yang baik, dan yang paling penting adalah pemahaman ekspresi reguler dasar. Mesin WordPress Rewrite menggunakan ekspresi reguler untuk menerjemahkan bagian dari URL ke kueri untuk mendapatkan posting.
Ini adalah tutorial singkat dan bagus tentang PHP PCRE (ekspresi reguler yang kompatibel dengan Perl).
Jadi, Anda telah menambahkan dua taksonomi, anggap saja namanya:
Kita bisa menggunakan ini dalam kueri seperti:
Kueri akan menjadi
?product_type=cell-phones&product_brand=samsung
. Jika Anda mengetiknya sebagai kueri, Anda akan mendapatkan daftar ponsel Samsung. Untuk menulis ulang/cell-phones/samsung
ke kueri itu, aturan penulisan ulang harus ditambahkan.add_rewrite_rule()
akan melakukan ini untukmu. Berikut ini contoh tampilan aturan penulisan ulang Anda untuk kasus di atas:Anda harus
flush_rewrite_rules()
segera setelah Anda menambahkan aturan penulisan ulang untuk menyimpannya ke database. Ini dilakukan hanya sekali, tidak perlu melakukan ini dengan setiap permintaan, sekali aturan yang ada di sana. Untuk menghapusnya cukup siram tanpa aturan penulisan ulang yang ditambahkan.Jika Anda ingin menambahkan pagination, Anda dapat melakukannya dengan melakukan sesuatu seperti:
sumber
Hasil akhirnya
Inilah yang saya buat sebagian menggunakan bit dan potongan dari semua jawaban yang saya dapatkan:
Beberapa pemikiran:
Ini berhasil. Meskipun Anda 'diharuskan' untuk menetapkan taksonomi kedua untuk setiap posting atau URL akan memiliki trailing
'/'
»'/products/taxonomy//postname'
. Karena saya akan menetapkan kedua taksonomi untuk semua procuts saya, memiliki tipe dan merek, kode ini tampaknya berfungsi untuk kebutuhan saya. Jika ada yang punya saran atau peningkatan, silakan balas!sumber
flush_rewrite_rules()
padainit
? jangan lakukan itu. pada dasarnya Anda mengatur ulang aturan penulisan ulang Anda dengan setiap halaman memuat.Lihat dengan cara ini, masih ada beberapa bug dengan arsip merek
http://pastebin.com/t8SxbDJy
}
sumber
Meskipun bukan struktur URL yang diinginkan, Anda bisa mendapatkan:
tanpa harus menentukan aturan penulisan ulang kustom.
Itu memang mengharuskan Anda mendaftarkan taksonomi dan jenis pos kustom dalam urutan tertentu. Caranya adalah dengan mendaftarkan taksonomi apa pun di mana siput dimulai dengan siput tipe-posting Anda sebelum Anda mendaftarkan tipe posting khusus itu. Misalnya, asumsikan siput berikut:
Kemudian Anda bisa mendaftarkannya dalam urutan ini:
Jika Anda benar-benar harus memiliki URL seperti:
Maka Anda akan membutuhkan aturan penulisan ulang sesuatu seperti ini:
UPDATE /programming/3861291/multiple-custom-permalink-structures-in-wordpress
Inilah cara Anda mendefinisikan ulang URL satu posting dengan benar.
Setel tulis ulang menjadi false untuk jenis posting khusus. (Biarkan arsip apa adanya) dan kemudian setelah mendaftarkan taksonomi dan posting, daftarkan juga aturan penulisan ulang berikut.
Kemudian filter post_type_link untuk membuat struktur URL yang diinginkan - memungkinkan untuk nilai taksonomi yang tidak disetel. Mengubah kode dari pos tertaut, Anda harus:
Sekarang saya hanya perlu mencari cara untuk menulis ulang url taksonomi merek tanpa label merek terkemuka, dan saya harus mencocokkan URL yang Anda inginkan dengan tepat.
sumber