Başında, bir gönderiyi wp_insert_postkaydeden / 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_urlnerede132. Burada her zaman benzersiz bir değere sahipsiniz. Bunun yanı sıra: Özel alanlarsave_posteylemde 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_metaveya değil. Ayrıca, özel alanı da kontrol edebilirsiniz ve benzersiz bir değeri yoksa, yayınlamayı devre dışı bırakmak içinpost-statusolarakdraftveya başka bir şey ayarlayın . Aksi takdirde bunu yapmak için jQuery gerekir düşünüyorum.