wordpress — пометить обязательное поле wp_editor в форме

Я работаю над формой интерфейса для WordPress, и я добавил wp_editor для текстовой области в моей форме ниже приведен код, который я добавил. Можно ли как-то пометить это поле как обязательное поле так же, как обязательный параметр HTML5?

<?php
$settings = array(
'wpautop' => false,
'media_buttons' => true,
'textarea_rows' => 5,
'tinymce' => true,
'teeny' => true,
'textarea_name' => 'main_Content',
'quicktags' => false,
'editor_height' => 300
);

$content = '';
$editor_id = 'main_Content';

wp_editor(stripslashes($content), $editor_id, $settings);
?>

0

Решение

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

  1. При создании редактора добавьте класс, который является уникальным для моего плагина и указывает, что в этом редакторе требуется содержимое.
  2. Подключите функцию к the_editor.
  3. Эта функция проверит, содержит ли разметка для редактора мой пользовательский класс. Если это так, он добавляет обязательный атрибут.

Я могу стилизовать поле, используя

textarea[required]:invalid

и форма генерирует ошибку, если она отправляется, когда это поле пустое (хотя я до сих пор тестировал только в Safari 10.1).

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

$addlClass = ($required) ? 'my-required-field' : '';
$settings  = array(
'media_buttons' => false,
'textarea_name' => $fieldName,
'editor_class'  => $addlClass
);
wp_editor($cleanFld, $fieldId, $settings);

Тогда мой крюк:

add_action('the_editor', array($this, 'CheckIfEditorFieldIsRequired'));

Наконец, эта функция:

public function CheckIfEditorFieldIsRequired($editorMarkup)
{
if (stripos($editorMarkup, 'my-required-field') !== false) {
$editorMarkup = str_replace('<textarea', '<textarea required', $editorMarkup);
}
return $editorMarkup;
}
2

Другие решения

Визуальный редактор — это не текстовая область, это iframe, поэтому даже если
Вы можете установить атрибут, он ничего не будет делать. Вы можете установить
атрибут скрытой текстовой области, которая будет отправлена ​​на сервер, но
так как это скрыто, я не уверен, как оповещение об этом не
заполненный будет отображаться, и он может отличаться в разных браузерах
(он скрыт, поэтому нет очевидной визуальной привязки для отображения
оповещение)

или еще

Вы можете добавить фильтр в редактор HTML

add_filter( 'the_editor', 'add_required_attribute_to_wp_editor', 10, 1 );

function add_required_attribute_to_wp_editor( $editor ) {
$editor = str_replace( '<textarea', '<textarea required="required"', $editor );
return $editor;
}
1

По вопросам рекламы [email protected]