Я нашел очень мало на этом сайте или в поисках Google примеров проверки пользовательских полей metabox.
Если кто-то хочет привести примеры, вот несколько случаев, которые были бы полезны
1) Дата, введенная как 05/02/2011, является действительным форматом даты
2) Число, введенное в текстовое поле, является числовым и находится в диапазоне от 100 до 500
3) Текст в текстовом поле имеет длину> 25 символов
У меня вопрос не столько в коде для проверки полей, сколько в том, где поставить код проверки? Использовать Javascript или PHP? Если он цепляется за сохранение сообщения, методы борьбы с ошибочной проверкой - Обновить сообщение? Не обновлять пост? - как остановить его обновление? Лучший способ уведомить пользователя о проблемах.
Все предложения приветствуются. Пример кода более полезен, чем просто описание техники. (Это была бы очень хорошая тема для кого-то, чтобы написать статью.) Спасибо
источник
Ответы:
Прямо из WP Codex @ http://codex.wordpress.org/Function_Reference/add_meta_box вы вызываете
save_post
ловушку и указываете функцию, которая будет запускаться для проверки / сохранения ваших данных:Затем вы определяете ту функцию, которой автоматически будет передан идентификатор сообщения. Кроме того, вы можете получить доступ к массиву $ _POST, чтобы получить значения в ваших метабоксах:
Все ваши процедуры с действительными данными будут выполнены в рамках этой функции. В конце вы, вероятно, сохраните данные, используя что-то вроде:
update_post_meta('meta_key', 'meta_value');
РЕДАКТИРОВАТЬ: Я понимаю, что я не рассмотрел широту вашего вопроса, но так как я вложил время в это, я оставляю это здесь, чтобы помочь вам четверть пути туда.
источник
Там действительно нет подходящего способа проверить поле даты, все, что вы можете сделать, это разделить его и проверить его по частям.
Это так
checkdate()
, но, как уже упоминалось в комментариях на странице документов, его нельзя использовать в качестве эффективного средства для дезинфекции ввода даты.Первое, что я обычно проверяю, это тип данных, если ожидается строка, затем приведение к строке, а также для целочисленных значений и значений массива.
Для полей даты у вас обычно есть разделитель между каждой частью даты, разделенный на основе этого и приведенный части (сколько вы ожидаете) как целые числа.
Конечно, это действительно зависит от того, как вы храните дату и что вы ожидаете в этой области, это то, что вам просто нужно соответствующим образом санировать в соответствии с вашими конкретными потребностями.
Числовые значения довольно просты, сначала приводятся к int ..
Затем проверьте, находится ли он в заданном диапазоне (по вашему вопросу).
или..
Проверить, является ли строка определенной длины, легко, так что на самом деле я просто собираюсь связать вас с документацией PHP для strlen.
http://php.net/manual/en/function.strlen.php
По моему мнению, значения даты являются самыми хитрыми, но на самом деле это тот случай, когда вы пишете свой код, соответствующий тому, что вы ожидаете от этого поля. Если у вас есть поле с форматом даты,
D/M/Y
например, вы знаете, что/
(косая черта) будет (должна) присутствовать и что разделение на этом разделителе должно дать вам массив из 3 числовых значений ... (если расщепление не ' Если вы не дадите 3 значения, или любое из них не является допустимым числовым значением, то данные будут недействительными).Надеюсь, это поможет .. (и я открыт для критики, если у кого-то есть лучший метод для любого из вышеперечисленных).
источник
Чтобы правильно проверить ввод, вам нужно использовать комбинацию Javascript и PHP.
Я настоятельно рекомендую использовать плагин jQuery Validation: http://docs.jquery.com/Plugins/Validation . Это позволит вам сразу же проверить входные данные и сообщить пользователю, что что-то не так.
Второй шаг - проверка данных с использованием PHP. В WordPress есть множество встроенных функций проверки , поэтому я бы начал с них, и если вы не можете найти то, что вам нужно, просто встроите необходимую логику.
источник