Intereting Posts
Смещение для цикла Импорт внешнего XML Как передать переменную в действие wp_ajax? Мета-запрос ужасно медленный Woocommerce включает пользовательскую таблицу стилей после стилизации woocommerce Список случайных сообщений на одной странице в текущей категории Как переносить сообщения в два столбца с разными размерами изображений с помощью переменной $ counter? Как получить ответы на комментарий? Условный оператор, если на странице архива есть сообщения, которые содержат определенные таксономии / категории / теги, показывают эти термины Страницы с разбивкой по страницам, категориям, архиву и тегам не работают Разработка темы для многоязычной установки WordPress тема childs не может переопределить header.php Как разбить сайт WordPress с помощью Schema.org? Admin: Получить всех пользователей для пользовательской роли Как включить user_can_rich_edit для гостей?

Остановить wordpress от создания пустых / нулевых записей

Поворот с помощью специального типа сообщений, который довольно сильно модифицирован. Начал выполнять некоторые тесты, чтобы проверить, не сломал ли я некоторые функции, и понял, что WordPress не имеет функции, которая проверяет, имеет ли сообщение какой-либо контент вообще. Смысл, если я нажму «Добавить новое» и просто нажмите «Публиковать», он не скажет ни слова, просто сохранит информацию в базе данных.

Проблема в том, что она не видна в области администратора, как раз в базе данных. Создается запись с автозагрузкой заголовка Auto Draft и пост-статус.

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

Поэтому мне интересно, как я собирался создать какую-то функцию, которая проверяет, были ли введены какие-либо данные в редакторе, и если он пуст, он предложит пользователю ввести данные перед сохранением / публикацией сообщения.

Опубликовать мета выглядит следующим образом:

<?php if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) {?> <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Publish') ?>" /> <?php submit_button( __( 'Create' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); } else { ?> <input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Save') ?>" /> <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Save') ?>" /> <?php } ?> 

Когда мне нужно решение проблемы сохранения, я создаю функцию Ajax для проверки полей и сделаю некоторые незначительные хаки JQuery:

сначала мы добавляем наш JavaScript, чтобы зафиксировать событие submit / publish и использовать его для отправки нашей собственной функции ajax до фактического представления

  add_action('wp_print_scripts','my_publish_admin_hook'); function my_publish_admin_hook(){ if (is_admin()){ ?> <script language="javascript" type="text/javascript"> jQuery(document).ready(function() { jQuery('#post').submit(function() { var form_data = jQuery('#post').serializeArray(); form_data = jQuery.param(form_data); var data = { action: 'my_pre_submit_validation', security: '<?php echo wp_create_nonce( 'pre_publish_validation' ); ?>', form_data: form_data }; jQuery.post(ajaxurl, data, function(response) { if (response.indexOf('True') > -1 || response.indexOf('true') > -1 || response = true || response) { jQuery('#ajax-loading').hide(); jQuery('#publish').removeClass('button-primary-disabled'); return true; }else{ alert("please correct the following errors: " + response); jQuery('#ajax-loading').hide(); jQuery('#publish').removeClass('button-primary-disabled'); return false; } }); return false; }); }); </script> <?php } } 

то мы создаем функцию для фактической проверки:

 add_action('wp_ajax_my_pre_submit_validation', 'pre_submit_validation'); function pre_submit_validation(){ //simple Security check check_ajax_referer( 'pre_publish_validation', 'security' ); //do your validation here //all of the form fields are in $_POST['form_data'] array //and return true to submit: echo 'true'; die(); //or your error message: echo 'bal bla bla'; die(); } 

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

понял, что wordpress не имеет функции, которая проверяет, имеет ли сообщение какой-либо контент вообще. Смысл, если я нажму «Добавить новое» и просто нажмите «Публиковать», он не скажет ни слова, просто сохранит информацию в базе данных.

Это неверно. wp_insert_post() проверяет, имеет ли почта содержимое, заголовок или выдержку. Если все они пусты, то он возвращает WP_Error с сообщением о пустом содержимом.

Проблема в том, что она не видна в области администратора, как раз в базе данных. Создается запись с автозагрузкой заголовка Auto Draft и пост-статус.

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

При быстром просмотре кода автоматические черновики должны быть очищены автоматически.