У меня есть множество вариантов сайта.
Тогда у меня есть функция, которая проверяет все данные, представленные моими пользователями, используя цикл foreach. Вы не будете знать, откуда взято большинство переменных, но в данном случае это не важно:
function settings_validation($input) {
$settings = my_array();
foreach ($settings as $setting) {
//this function leaves the old field's value if there's no input
if($type == 'something' && empty($input[$id])) {
$valid_input[$id] = $option[$id];
}
//this function updates the field if input is not NULL
else if($type == 'something' && !empty($input[$id])) {
$valid_input[$id] = $input[$id];
}
return $valid_input;
};
$ input - это массив всех полей формы, созданных после отправки, если поле пустое, его значение равно "".
Теперь вот беда.
Когда я хочу стереть одно из полей, это невозможно - когда я не оставляю данные в этом поле и отправляю форму, он не отправляет данные и всегда запускает первый оператор if и покидает поле в состоянии перед удалением.
Если я удаляю первый оператор if, а затем отправляю форму, он отправляет новые данные в отредактированные мной опции и стирает все остальные (так как их входные данные $ пусты).
Я не уверен, какие проверки следует делать, чтобы определить разницу между пустым $ input, сгенерированным функцией, и пустым $ input, созданным действием пользователя?
Используемая мной функция settings_validation () является обратным вызовом для другой функции, называемой register_setting () , я спрашиваю здесь, потому что не в WPSE это скорее проблема, связанная с PHP.