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);
?>

person krishna89    schedule 29.09.2016    source источник


Ответы (2)


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

  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;
}
person Mario Hendricks    schedule 09.08.2017
comment
Дальнейшее тестирование показывает, что это не работает в достаточно свежих версиях Chrome или Firefox, по крайней мере, пока. - person Mario Hendricks; 13.08.2017

Визуальный редактор - это не текстовое поле, это 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;
}
person Samir Sheikh    schedule 29.09.2016