Dengan add_query_arg()
itu bagus untuk menambahkan parameter tambahan ke URL dan juga mudah untuk membuat aturan penulisan ulang. Sejauh ini bagus. Tetapi masalahnya adalah penggantian URL dilakukan oleh wordpress.
Ketika saya memiliki URL, seperti:
www.mysite.com/?page_id=1&myvar=test
dan saya mengetik URL ini ke baris alamat browser dengan permalink yang diaktifkan. Tautan ini akan menjadi ke:
www.example.com/pagename/?myvar=test
TETAPI : apa yang ingin saya dapatkan adalah:
www.example.com/pagename/test
Akhirnya, saya ingin menggunakan kode seperti:
<a href="<?php add_query_arg( 'myvar', 'test', get_permalink() ) ?>"> .... </a>
yang akan menghasilkan:
www.example.com/pagename/test
Bagaimana ini bisa dicapai? Saya menghabiskan waktu berjam-jam membaca dokumen dan saya tidak dapat menemukan solusi.
permalinks
url-rewriting
urls
pengguna3114592
sumber
sumber
Jawaban:
Hanya menghadapi situasi yang sama dan menemukan pertanyaan ini sambil googling.
Sepertinya ini tidak mungkin. Core sendiri hanya menambahkan string ke URL jika permalink cantik diaktifkan, lihat https://core.trac.wordpress.org/browser/tags/3.9.1/src/wp-includes/link-template.php#L571
Bagi siapa pun yang tertarik dengan ini: Anda dapat melakukan sesuatu seperti ini dalam kode Anda:
Solusi ini juga direkomendasikan oleh Jon Cave dalam komentar di blog resmi: https://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/#comment-686
sumber
WordPress tidak akan membiarkan Anda melakukan ini dengan mudah. Faktanya, aturan penulisan ulang adalah satu-satunya pilihan Anda untuk mencapai hal semacam ini di WordPress dan aturan penulisan ulang WordPress bisa menjadi sangat berantakan ketika situs Anda tumbuh karena plugin dan tema (dan Anda juga) dapat menambahkan aturan penulisan ulang kustom di atas aturan yang ada di (multi ) instalasi situs.
Solusi @swissspidy akan berfungsi jika Anda sudah memiliki aturan penulisan ulang untuk kunci Anda (myvar) dan menggunakan permalinks dalam kondisi pertama dan kemudian mundur ke string kueri tradisional tanpa adanya kondisi tersebut. Solusi @Johnathan Joosten menunjukkan bagaimana aturan penulisan ulang menjadi sangat kompleks di WordPress (bayangkan melakukan itu untuk semua kunci dan nilai string kueri Anda ...)
Saya bertemu masalah ini beberapa kali sebelumnya ketika mengerjakan beberapa proyek menengah untuk klien saya dan saya dapat mencapai sesuatu yang serupa menggunakan plugin yang disebut Obfusquer. Menurut situs web, ini menutupi semua string kueri WordPress dengan kunci rahasia yang ditentukan pengguna dan juga menyediakan kait untuk persyaratan khusus tingkat lanjut.
Lucu, itu tidak terdaftar di repositori plugin WordPress, dan saya pikir Anda akan perlu berlangganan (yang saya pikir sangat terjangkau karena 1 lisensi tunggal akan bekerja bahkan dalam instalasi multisite) tetapi di sini ada tautan ke sana jika Anda perlu menutupi / sembunyikan string permintaan di instalasi WordPress. Mereka juga memiliki dokumentasi di sini .
Saya sekarang menggunakan plugin di hampir semua proyek wordpress saya, semoga membantu kebutuhan Anda. Bersulang.
sumber
Solusi Wordpress adalah menambahkan aturan penulisan ulang untuk membuat sesuatu seperti ini:
baca lebih lanjut: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule
sumber