На початку wp_insert_post
функції, яка зберігає / оновлює публікацію, є фільтр, який називається wp_insert_post_empty_content
. За замовчуванням цей фільтр перевіряє, чи всі поля заголовка, редактора та уривку порожні, і в цьому випадку процес збереження буде зупинений.
Однак, оскільки всі поля, які потрібно зберегти, передаються до цього фільтра, ви можете розширити цей фільтр, щоб включити будь-який інший тест, щоб визначити, чи слід вважати публікацію порожньою. Це було б щось подібне:
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;
}
Примітка: функція повинна повернути "true", щоб зупинити процес збереження.
Якщо спеціальне поле не є унікальним, ви також можете повторити попередження.
132_url
де132
поштовий ідентифікатор. Чим ви завжди маєте унікальну цінність. Окрім цього: Спеціальні поля слід зберігати вsave_post
дії. У цій дії ви можете перевірити спеціальне поле (якщо воно не порожнє і має унікальне значення, наприклад), і на основі цьогоupdate_post_meta
чи ні. Я думаю , ви могли б також перевірити призначені для користувача поля , і якщо він не має унікального значення, встановитиpost-status
наdraft
або що - то ще, щоб відключити публікацію. Інакше я думаю, що для цього вам потрібен jQuery.