Saya sedang membangun situs Wordpress dengan beberapa jenis posting khusus. Setiap jenis posting adalah majalah yang berbeda. Saya juga memiliki bidang meta khusus untuk tahun dan masalah majalah.
Saya ingin memiliki url (digunakan archive.php):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Saya membuatnya dengan kode:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
dan:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Tentunya saya juga memiliki permintaan khusus di archive.php. Dan itu bekerja dengan baik.
Tapi sekarang, url saya untuk artikel tunggal tidak berfungsi. Secara default, itu adalah:
http://my_site/magazine/post-title
tapi tunjukkan semua artikel dari majalah seperti url (dan menggunakan templat archive.php):
http://my_site/magazine/
Bagaimana cara menambahkan aturan penulisan ulang yang benar untuk posting khusus tunggal? Mungkin saja, saya ingin memiliki url untuk posting tunggal (hanya untuk jenis posting khusus yang dipilih) dalam format ini:
http://my_site/magazine/year/issue/post-title
sumber
10
merupakan prioritas standar . Anda dapat meninggalkan keduanya dalam kasus itu ... atau mencoba nomor yang lebih tinggi. (2) Apakah Anda sudah memeriksa aturan penulisan ulang yang dihasilkan? Pastikan juga Anda memeriksa urutan aturan-aturan tersebut saat diproses dalam urutannya. Dump$GLOBALS['wp_rewrite']
. (3) Apakah Anda menambahkanquery_vars
bahwa mungkin bertentangan?Jawaban:
Saya menemukan solusi! Plugin Monkeyman Rewrite Analysiszur sangat membantu: https://wordpress.org/plugins/monkeyman-rewrite-analyzer/
Jadi sekarang, saya punya url yang berfungsi ...
single.php:
archive.php:
Pada halaman editor pos khusus di wp-admin saya menggunakan plugin Bidang Kustom Tingkat Lanjut untuk tahun dan masalah. Anda juga dapat menentukan bidang meta sendiri.
Selanjutnya saya menambahkan tag penulisan ulang untuk tahun dan masalah terbitan:
Selanjutnya, saya menambahkan penulisan ulang aturan penulisan ulang untuk setiap kombinasi url:
Pada akhirnya saya mengganti url standar untuk saya sendiri, dengan tahun masalah dan masalah
sumber