Intereting Posts
Отключите функцию доступности «Переход к панели инструментов» Получите img alt tag из изображения, загруженного через Customizer Как превратить этот HTML-код в короткий код? (добавление текстов песен и предоставление идентификатора div) как показать уведомление администратора на странице пользовательского меню после отправки формы? Изображение заголовка не отображается на странице Как пометить основной тег? Как получить идентификатор изображений, используемых в галерее? Длина имен категорий Как я могу удалить разрывы строк <br /> из форматированного вручную HTML? Меню администратора в интерфейсе Как изменить размер изображения Шаблон страницы в папке с двумя уровнями глубины Как передать текущие термины таксономии в новый WP_Query? Есть ли крючок перед аутентификацией пользователя? Условный, который проверяет, имеет ли текущая категория какая-либо подкатегория с сообщениями

Пример кода для проверки пользовательского метабокса?

Я нашел очень мало на этом сайте или в Google ищет примеры проверки пользовательских полей метабокса.

Если кто-то хочет привести примеры, вот некоторые случаи, которые были бы полезны

1) Дата, введенная как 05/02/2011, является допустимым форматом даты
2) Номер, введенный в текстовое поле, является числовым и от 100 до 500
3) Текст в текстовом поле>> 25 символов

Мой вопрос – это не столько код для проверки полей, но и где поставить код проверки? Использовать Javascript или PHP? Если он перехватывает сообщения сохранения, методы устранения неудачной проверки – обновить сообщение? Не обновлять сообщение? – как вы прекратите его обновление? Лучший способ уведомить пользователя о проблемах.

Все предложения приветствуются. Пример кода более полезен, чем просто описание техники. (Это было бы очень хорошей темой для того, чтобы кто-то написал статью.) Спасибо

Solutions Collecting From Web of "Пример кода для проверки пользовательского метабокса?"

Прямо из WP Codex @ http://codex.wordpress.org/Function_Reference/add_meta_box вы вызываете save_post и указываете функцию, которая будет выполняться для проверки / сохранения ваших данных:

 /* Do something with the data entered */ add_action('save_post', 'myplugin_save_postdata'); 

Затем вы определяете эту функцию, которая будет автоматически передаваться после id. Кроме того, вы можете получить доступ к массиву $ _POST, чтобы получить значения в ваших обменных ситуациях:

 /* When the post is saved, saves our custom data */ function myplugin_save_postdata( $post_id ) { // verify if this is an auto save routine. // If it is our form has not been submitted, so we dont want to do anything if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) ) ) return $post_id; // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; } // OK, we're authenticated: we need to find and save the data $mydata = $_POST['myplugin_new_field']; // Do something with $mydata // probably using add_post_meta(), update_post_meta(), or // a custom table (see Further Reading section below) return $mydata; } 

Все ваши подпрограммы к действительным данным будут выполняться внутри этой функции. В конце концов, вы, скорее всего, сохраните данные, используя что-то вроде: update_post_meta('meta_key', 'meta_value');

EDIT: Я понимаю, что я не рассматривал широту вашего вопроса, но, так как я вставляю время в это, я оставляю его здесь, чтобы получить четверть пути.

Там действительно нет подходящего способа проверки поля даты, все, что вы можете сделать, это разделить его и проверить его по частям.

Существует checkdate() , но, как упоминалось в комментариях на странице документов, он не может использоваться в качестве эффективного средства для дезинфекции ввода даты.

Первое, что я обычно проверяю, это тип данных, если вы ожидаете, что строка будет передана в строку, а также для значений integer и array.

 // Casting example $string = (string) $string; $num = (int) $num; $array = (array) $array; 

Для полей даты у вас обычно есть разделитель между каждой частью даты, сплит на основе этого и отбрасывание частей (сколько бы вы ожидали) в качестве целых чисел.

 $date = explode( '/', (string) $string ); $date = array_map( 'intval', $date ); // Now count the parts and validate them further - eg. you don't want negative values 

Конечно, это действительно зависит от того, как вы храните дату и то, что ожидаете в этой области, это то, что вам нужно будет просто санировать надлежащим образом в соответствии с вашими конкретными потребностями.

Числовые значения довольно просты, сначала отбрасываются в int ..

 $num = (int) $var_with_num; // Or $num = absint( $var_with_expected_non_negative_num ); // absint is a WordPress function 

Затем проверьте его в пределах заданного диапазона (по вашему вопросу).

 // If it's not in range if( $num < 100 || $num > 500 ) { // Number is not in range } 

или..

 // If it is in range - including 100 & 500 as possible values if( $num >= 100 && $num <= 500 ) { // Number is in range } 

Проверка того, является ли строка определенной длиной, проста, так просто на самом деле, я просто собираюсь связать вас с документацией 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 имеет кучу встроенных функций проверки , поэтому я бы начал там, и если вы не можете найти то, что вам нужно, просто создайте логику, в которой вы нуждаетесь.