Başında, bir gönderiyi wp_insert_post
kaydeden / güncelleyen işlev olarak adlandırılan bir filtre vardır wp_insert_post_empty_content
. Varsayılan olarak bu filtre başlık, editör ve alıntı alanlarının boş olup olmadığını kontrol eder, bu durumda kaydetme işlemi durdurulur.
Ancak, kaydedilecek tüm alanlar bu filtreye iletildiğinden, postanın boş olarak değerlendirilip değerlendirilmemesi gerektiğini belirlemek için bu filtreyi başka bir test içerecek şekilde genişletebilirsiniz. Böyle bir şey olurdu:
add_filter ('wp_insert_post_empty_content','wpse312975_check_unique_url',10,2);
function wpse312975_check_unique_url ($maybe_empty, $postarr) {
// extract custom field from $postarr, check uniqueness
if ($unique) return false else return true;
}
Not: Kaydetme işlemini durdurmak için işlev 'true' değerini döndürmelidir.
Özel alan benzersiz değilse, bir uyarıyı tekrarlamak isteyebilirsiniz.
132_url
nerede132
. Burada her zaman benzersiz bir değere sahipsiniz. Bunun yanı sıra: Özel alanlarsave_post
eylemde saklanmalıdır . Bu eylemde, özel alanı (boş değilse ve örneğin benzersiz bir değere sahipse) kontrol edebilirsiniz ve buna göreupdate_post_meta
veya değil. Ayrıca, özel alanı da kontrol edebilirsiniz ve benzersiz bir değeri yoksa, yayınlamayı devre dışı bırakmak içinpost-status
olarakdraft
veya başka bir şey ayarlayın . Aksi takdirde bunu yapmak için jQuery gerekir düşünüyorum.