Apakah mungkin untuk mendeklarasikan ulang / mengubah siput dari jenis pos kustom plugin yang ada (tanpa hanya mengedit plugin)?
Yaitu, jika Plugin X membuat tipe posting khusus dengan slug / uncookedtoast /, apakah mungkin untuk menambahkan filter ke functions.php (atau yang serupa) yang mengubah slug menjadi / bread /?
custom-post-types
functions
slug
Edbury
sumber
sumber
Jawaban:
Ya, ini mungkin, tetapi jika plugin membuat jenis posting khusus menggunakan
rewrite => array('slug' => 'post_type')
parameter, maka kemungkinan Anda tidak akan bisa mengganti siput.Setiap kali jenis posting khusus dibuat, aturan penulisan ulang URL ditulis ke database. Bergantung pada tindakan mana yang memicu pembuatan jenis posting kustom (seperti tindakan init ), WordPress akan menghapus aturan penulisan ulang dan mengembalikan siput jenis posting kustom terlepas dari perubahan apa yang Anda coba buat.
Yang mengatakan, Anda dapat memberikan siput khusus untuk jenis posting kustom. Contoh berikut mengasumsikan bahwa Anda memiliki jenis posting khusus
movies
dan bahwa Anda mencoba untuk mengubah/movies/
siput/films/
.Agar lengkap, inilah fungsi dasar yang digunakan untuk menentukan
movies
jenis posting khusus. Plugin yang Anda referensikan harus melakukan sesuatu seperti ini:Anda dapat mengubah tabel opsi dengan memberikan aturan kustom Anda sendiri berdasarkan jenis posting yang ada.
Pada dasarnya, kami akan melakukan ini:
Inilah cara Anda dapat melakukan ini:
Sekarang, Anda memiliki dua cara untuk mengakses film:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Perhatikan bahwa saya tidak merekomendasikan mengaitkannya
add_custom_rewrite_rule
ke dalaminit
tindakan karena itu akan menyala terlalu sering. Ini hanya sebuah contoh. Tempat yang lebih baik untuk menerapkan fungsi ini adalah pada aktivasi tema, aktivasi plugin, mungkin tindakan save_post, dll. Bergantung pada apa yang perlu Anda lakukan, Anda mungkin hanya perlu memecatnya sekali atau hanya beberapa kali.Pada titik ini, Anda mungkin ingin mempertimbangkan memperbarui permalink untuk jenis posting khusus untuk menggunakan '
/movies/
siput. Misalnya, jika Anda menavigasi ke/films/
, Anda akan melihat daftar semua film Anda tetapi melayang di atas judul akan mengungkapkan bahwa/movies/
siput masih digunakan.Untuk melangkah lebih jauh, Anda secara teknis bisa membuat pengalihan 301 untuk menangkap semua tautan
/movies/
untuk mengarahkan ke/films/
mitra mereka , tetapi ini semua tergantung pada apa yang Anda coba lakukan.sumber
$post
dalamadd_custom_rewrite_rule()
fungsi tetapi itu melemparkan kesalahan di WP Admin yang mengatakan 'Mencoba untuk mendapatkan properti dari non-objek'. Bagaimana saya bisa mendapatkan $ posting untuk mendapatkan nilai meta?Kode ini berfungsi baik untuk tema anak saya. Diperlukan untuk mengubah "program" siput ke "tempat".
sumber
$args['has_archive'] = false
dan ini berhasil.