Tampaknya semua sumber daya web berdasarkan subjek menghapus siput tipe pos kustom
yourdomain.com/CPT-SLUG/post-name
sekarang solusi yang sangat usang sering merujuk pra instal WP versi 3.5 menginstal. Yang umum adalah:
'rewrite' => array( 'slug' => false, 'with_front' => false ),
dalam fungsi register_post_type Anda. Ini tidak lagi berfungsi dan menyesatkan. Jadi saya bertanya kepada komunitas di Q3 2018 di tepi WordPress 5 ...
Apa cara modern dan efisien untuk menghapus Slug Jenis Kiriman dari URL kiriman Jenis Kiriman Kustom dari dalam argumen penulisan ulang atau di mana pun?
UPDATE: Tampaknya ada beberapa cara untuk memaksa ini bekerja dengan regex. Khususnya jawaban dari Jan Beck jika Anda secara konsisten bersedia memantau pembuatan konten untuk memastikan tidak ada halaman / posting yang saling bertentangan dibuat .... Namun saya yakin bahwa ini adalah kelemahan utama dalam inti WP di mana harus ditangani untuk kami . Baik sebagai opsi / kait saat membuat CPT atau opsi opsi lanjutan untuk permalink. Tolong dukung tiket trek.
Catatan Kaki: Tolong dukung tiket trac ini dengan menonton / mempromosikannya: https://core.trac.wordpress.org/ticket/34136#ticket
sumber
Jawaban:
Kode berikut akan berfungsi, tetapi Anda harus ingat bahwa konflik dapat terjadi dengan mudah jika siput untuk jenis posting kustom Anda sama dengan halaman atau siput posting ...
Pertama, kami akan menghapus siput dari permalink:
Menghapus siput saja tidak cukup. Saat ini, Anda akan mendapatkan halaman 404 karena WordPress hanya mengharapkan posting dan halaman berperilaku seperti ini. Anda juga perlu menambahkan yang berikut:
Cukup ubah "acara" ke jenis pos kustom Anda dan Anda siap melakukannya. Anda mungkin perlu menyegarkan permalink Anda.
sumber
2 != count( $query->query )
. Dengan nginx, Anda dapat memiliki $ query-> query sebagaiarray('page' => '', 'name' => '...', 'q' => '...')
. Jadi @NateAllen, apa arti dari kondisi itu?Tulis kode berikut ke dalam pendaftaran taksonomi.
Hal terpenting yang harus Anda lakukan setelah mengganti kode
Setelah Anda mengubah dokumen taksonomi jenis pos kustom, coba buka Pengaturan> Permalinks dan simpan kembali pengaturan Anda , jika tidak, Anda akan mendapatkan 404 halaman tidak ditemukan.
Periksa di sini untuk solusi terbaik: http://www.krazzycodes.com/how-to-remove-custom-post-type-taxonomy-base-from-url-in-wordpress/
sumber
Saya mencoba mencari tahu ini belum lama ini dan jawaban singkat dari apa yang saya tahu adalah tidak . Paling tidak dari dalam argumen menulis ulang.
Penjelasan panjang menjadi jelas jika Anda melihat kode aktual
register_post_type
pada baris wp-include / post.php 1454 :Anda dapat melihatnya awalan
$args->rewrite['slug']
ke%$post_type%
tag penulisan ulang. Orang bisa berpikir "mari kita atur siputnull
itu" sampai Anda melihat beberapa baris:Anda dapat melihat bahwa fungsi selalu mengharapkan nilai slug yang tidak kosong dan menggunakan tipe posting.
sumber
Menanggapi jawaban saya sebelumnya : Anda tentu saja dapat mengatur
rewrite
parameterfalse
ketika mendaftarkan jenis posting baru dan menangani sendiri aturan penulisan ulang sepertiAnda dapat melihat
add_permastruct
panggilan sekarang tidak termasuk siput lagi. Saya menguji dua skenario:sumber
Melihat melalui jawaban di sini saya pikir ada ruang untuk solusi yang lebih baik yang menggabungkan beberapa hal yang saya pelajari di atas dan menambahkan deteksi otomatis dan pencegahan siput pos duplikat.
CATATAN: Pastikan Anda mengubah 'custom_post_type' untuk nama CPT Anda sendiri di seluruh contoh saya di bawah ini. Ada banyak kejadian, dan 'temukan / ganti' adalah cara mudah untuk menangkap semuanya. Semua kode ini bisa masuk ke functions.php Anda atau dalam sebuah plugin.
Langkah 1: Nonaktifkan penulisan ulang pada jenis posting kustom Anda dengan mengatur penulisan ulang ke 'false' ketika Anda mendaftarkan posting:
Langkah 2: Secara manual menambahkan penulisan ulang kustom kami ke bagian bawah penulisan ulang WordPress untuk custom_post_type kami
CATATAN: Bergantung pada kebutuhan Anda, Anda mungkin ingin memodifikasi penulisan ulang di atas (nonaktifkan trackback? Feed ?, dll). Ini mewakili jenis penulisan ulang 'default' yang akan dihasilkan jika Anda tidak menonaktifkan penulisan ulang di langkah 1
Langkah 3: Buat tautan permanen ke jenis posting khusus Anda 'cantik' lagi
CATATAN: Anda dapat berhenti di sini jika Anda tidak khawatir tentang pengguna Anda membuat posting (duplikat) yang saling bertentangan dalam jenis posting lain yang akan menciptakan situasi di mana hanya satu dari mereka yang dapat memuat ketika halaman diminta.
Langkah 4: Mencegah duplikat posting siput
CATATAN: Ini akan menambahkan string '-duplikat' ke akhir setiap siput duplikat. Kode ini tidak dapat mencegah duplikat siput jika sudah ada sebelum menerapkan solusi ini. Pastikan untuk memeriksa duplikat terlebih dahulu.
Saya akan senang mendengar kabar dari orang lain yang mencoba untuk melihat apakah itu bekerja dengan baik untuk mereka juga.
sumber
/%category%/%postname%/
. Saat menambahkan kode Anda, siput CPT terlihat OK (meskipun tidak ada tanda garis miring) ... dan pemeriksa konflik juga berfungsi. Tapi hasil posting sebenarnya pada 404.Anda tidak membutuhkan begitu banyak kode keras. Cukup gunakan plugin yang ringan:
Ini memiliki opsi yang dapat disesuaikan.
sumber
Punya masalah yang sama di sini dan sepertinya tidak ada gerakan di situs wordpress. Dalam situasi khusus saya di mana untuk posting blog tunggal struktur / blog /% postname% / diperlukan solusi ini
https://kellenmace.com/remove-custom-post-type-slug-from-permalinks/
berakhir pada sekelompok 404-an
Tetapi bersama dengan pendekatan yang luar biasa ini, yang tidak menggunakan strukture permalink backend untuk blogpost akhirnya berfungsi seperti charme. https://www.bobz.co/add-blog-prefix-permalink-structure-blog-posts/
Terima kasih banyak.
sumber
dan kami dapat membuat beberapa perubahan pada fungsi yang disebutkan di atas:
untuk:
untuk mengatur nilai post_type yang tepat.
sumber
Ini bekerja untuk saya:
'rewrite' => array('slug' => '/')
sumber
Bagi siapa pun yang membaca ini yang memiliki masalah dengan posting anak-anak seperti saya, saya menemukan cara terbaik adalah menambahkan aturan penulisan ulang Anda sendiri.
Masalah utama yang saya alami adalah bahwa WordPress memperlakukan pengalihan dari halaman yang memiliki 2 level (posting anak) sedikit berbeda dari yang memperlakukan 3 level dalam (posting anak-anak).
Itu berarti ketika saya memiliki / post-type / post-name / post-child / saya dapat menggunakan / post-name / post-child dan itu akan mengarahkan saya ke yang dengan post-type di depan tetapi jika saya memiliki post-type / post-name / post-child / post-grandchild maka saya tidak bisa menggunakan post-name / post-child / post-grandchild.
Melihat ke aturan penulisan ulang sepertinya cocok untuk hal-hal selain pagename di tingkat pertama dan kedua (saya pikir tingkat kedua cocok dengan lampiran) dan kemudian melakukan sesuatu di sana untuk mengarahkan Anda ke pos yang tepat. Pada kedalaman tiga tingkat itu tidak berhasil.
Hal pertama yang perlu Anda lakukan adalah menghapus tautan jenis kiriman dari anak-anak juga. Logika ini harus terjadi di sini jika Anda melihat jawaban Nate Allen di atas:
Saya sendiri menggunakan campuran kondisional berbeda untuk memeriksa apakah posting memiliki anak dan yang lainnya untuk mendapatkan permalink yang tepat. Bagian ini tidak terlalu rumit dan Anda akan menemukan contoh orang melakukannya di tempat lain.
Namun langkah selanjutnya adalah di mana segala sesuatu berubah dari jawaban yang diberikan. Alih-alih menambahkan hal-hal ke permintaan utama (yang berfungsi untuk pos kustom dan anak-anak mereka tetapi tidak untuk anak-anak lebih lanjut), saya menambahkan penulisan ulang yang masuk ke bagian bawah aturan WordPress sehingga jika pagename tidak memeriksa dan akan segera tekan 404 itu akan melakukan satu pemeriksaan terakhir untuk melihat apakah halaman dalam jenis posting kustom memiliki nama yang sama kalau tidak akan membuang 404.
Inilah aturan penulisan ulang yang saya gunakan dengan anggapan 'event' adalah nama CPT Anda
Semoga ini bisa membantu orang lain, saya tidak dapat menemukan hal lain yang berhubungan dengan child of child post dan menghapus siput dari itu.
sumber