Saya memiliki permintaan yang diajukan xxxx_url
. xxxx_url
harus unik.
Jadi, sebelum menerbitkan posting, saya ingin memastikan itu xxxx_url
unik atau tidak? Jika tidak unik, mempublikasikan posting harus ditolak.
Saya mencoba publish_post
. Tapi itu bukan yang benar, karena dipicu ketika kami mempublikasikan posting. Saya ingin menjalankan kode saya sebelum diterbitkan.
custom-field
filters
hooks
actions
Akulah Orang yang Paling Bodoh
sumber
sumber
132_url
mana132
ID pos. Daripada Anda selalu memiliki nilai unik di sini. Selain itu: Bidang khusus harus disimpan dalamsave_post
tindakan. Dalam tindakan ini Anda dapat memeriksa bidang khusus (jika tidak kosong dan memiliki nilai unik misalnya), dan berdasarkan iniupdate_post_meta
atau tidak. Saya kira Anda juga bisa memeriksa bidang khusus dan jika tidak memiliki nilai unik, setelpost-status
kedraft
atau yang lainnya, untuk menonaktifkan penerbitan. Kalau tidak, saya pikir Anda perlu jQuery untuk melakukan ini.Jawaban:
Di awal
wp_insert_post
, fungsi yang menyimpan / memperbarui posting, ada filter yang disebutwp_insert_post_empty_content
. Secara default filter ini memeriksa apakah judul, editor, dan bidang kutipan semuanya kosong, dalam hal ini proses penyimpanan akan dihentikan.Namun, karena semua bidang yang akan disimpan diteruskan ke filter ini, Anda dapat memperluas filter ini untuk memasukkan tes lain untuk menentukan apakah posting harus dianggap kosong. Itu akan menjadi seperti ini:
Catatan: fungsi harus mengembalikan 'true' untuk menghentikan proses penyimpanan.
Jika bidang khusus tidak unik, Anda mungkin juga ingin mengulangi peringatan.
sumber
wp_insert_post_empty_content
secara semantik dimaksudkan untuk konten kosong . Karena itu, saya tidak menemukan kait yang semantik tepat untuk ini juga.wp_insert_post_valid_content
untuk menyatakan itu, tetapi untuk sisanya itu tepat di tempat yang tepat.wp_insert_post_empty_content
filter?Bagaimana dengan menggunakan AJAX untuk memeriksa keunikan bahkan sebelum mengirimkan posting untuk diterbitkan?
Meskipun kode tersebut tidak diuji, tetapi harus berfungsi. Anda mungkin perlu bermain dengannya untuk mendapatkan hasil yang diinginkan.
sumber
Saya akan menghubungkan ke filter wp_insert_post_data dan menangani ini seminimal mungkin karena karena saya mengerti Anda tidak ingin memblokir penyisipan posting, Anda hanya ingin menghindari menerbitkan posting dengan nilai meta duplikat.
Saya tidak dapat menyimpan terlalu banyak dalam hal ini karena Anda tidak membagikan kode apa pun, tetapi di sini ada beberapa kode pseudo-filter yang berfungsi:
Hal hebat lainnya tentang filter ini adalah filter ini terpisah dari lampiran
wp_insert_attachment_data
.Saya harap ini membantu, dan apa pun yang Anda lakukan, kedengarannya luar biasa!
sumber
$data['post_status']
inipublish
dan pengguna memperbarui? Tidak akan membuat pos sebagaidraft
membuat404
masalah untuk posting itu?Ceknya harus ke
wp_insert_post
. Pengait ini dipecat setiap kali pos dipublikasikan atau diedit.Di sana, Anda dapat melakukan kueri khusus untuk memeriksa, apakah ada kiriman yang sudah memiliki nilai yang sama
xxxx_url
atau tidak.sumber
wp_insert_post
aksi terpicu setelah posting telah disimpan, itu tidak dapat memblokir penerbitan atau memasukkan posting.If it isn't unique it should reject publishing post.
dalam pertanyaan saya.