Intereting Posts
Как удалить вложения из основного запроса через pre_get_posts? Динамически изменять страницу, загружающую Предупреждение Javascript появляется перед тегом <! DOCTYPE> Повторение категорий только в том случае, если они являются дочерними элементами данной категории Связанные с WPDP функции работают, но они не Пользовательская кнопка Tiny MCE для создания настраиваемого всплывающего окна php Невозможно сохранить параметры темы, когда TinyMCE включен для текстовой области Вставки для мультимедиа порядок несколькими мета ключами в pre_get_posts Страница загружает все страницы галереи изображений с разбивкой на страницы Как удалить базу тегов из постоянных ссылок Как исключить родительскую категорию, но показывать дочерние категории? Если Post Meta Equals Current Title Условные дополнительные пользовательские поля Удаление вложенных папок из URL-адреса Невозможно выбрать правильного автора

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

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