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:
function movies_register_post_type() {
register_post_type(
'movies',
array(
'labels' => array(
'name' => __('Movies'),
'singular_name' => __('Movie')
),
'public' => true,
'has_archive' => true,
'rewrite' => array(
'slug' => 'movies'
)
)
);
} // end example_register_post_type
add_action('init', 'movies_register_post_type');
Anda dapat mengubah tabel opsi dengan memberikan aturan kustom Anda sendiri berdasarkan jenis posting yang ada.
Pada dasarnya, kami akan melakukan ini:
- Ambil seperangkat aturan yang ada dan kemudian tulis aturan kita sendiri dengan siput khusus kita sendiri
- Berikan aturan baru prioritas yang lebih tinggi daripada siput jenis pos kustom
Inilah cara Anda dapat melakukan ini:
function add_custom_rewrite_rule() {
// First, try to load up the rewrite rules. We do this just in case
// the default permalink structure is being used.
if( ($current_rules = get_option('rewrite_rules')) ) {
// Next, iterate through each custom rule adding a new rule
// that replaces 'movies' with 'films' and give it a higher
// priority than the existing rule.
foreach($current_rules as $key => $val) {
if(strpos($key, 'movies') !== false) {
add_rewrite_rule(str_ireplace('movies', 'films', $key), $val, 'top');
} // end if
} // end foreach
} // end if/else
// ...and we flush the rules
flush_rewrite_rules();
} // end add_custom_rewrite_rule
add_action('init', 'add_custom_rewrite_rule');
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 dalam init
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.