Intereting Posts
Изменение JS-файлов в Child-theme register_rest_field для пользовательских полей таксономии, которые связаны с настраиваемым типом сообщения Как получить фильмы по дате Поиск одной буквы возвращает лишнюю пустую запись Исправление пользовательской разбивки на страницы без изменения настроек для каждой страницы на странице Вызовите веб-службы на пост сначала опубликовать Добавление новых страниц в меню SimpleModal – Вход в систему: сообщение «Ошибка: все поля обязательны» даже при успешной регистрации WP_Widget устарела ошибка в WordPress V4.3 как отобразить имя таксономии в теге shorcode php Группировать / список / сортировать персонализированные сообщения типа post по дате в закладках из поля acp datepicker Должен ли я использовать wp_nonce_field в моей контактной форме? Показывать контент из плагина по индексу Отображать два пользовательских значения из сообщения Помощь с разбивкой по страницам CPT

WP_editor не применяет wpautop к содержимому одной строки

Для текущего проекта я пытаюсь повторить строку текста, сохраненную на странице параметров темы. Я использую функцию wp_editor для ввода пользователя вместо текстового поля. Код, который я использую, довольно прост:

<?php break; case "wysiwyg" : ?> <tr valign="top"> <th scope="row"><?php echo $value['name']; ?>:</th> <td> <?php if( get_settings($value['id']) != "") { $settings = stripslashes(get_settings($value['id'])); }else{ $settings = $value['std']; } ?> <?php wp_editor($settings,$value['id'],array('wpautop' => true,'media_buttons'=>false)); ?> <br /><?php echo $value['desc']; ?> </td> </tr> <?php break; ?> 

Я пытался убедиться, что абзацы используются, добавив wpautop => true . Проблема возникает, когда я пытаюсь добавить одну строку текста в режиме WYSIWYG. При сохранении поля добавляется абзац абзаца. После перезагрузки страницы вид html будет изменен на WYSIWYG, и все мои HTML-теги исчезли.

Я попытался использовать функцию wpautop вручную, но это добавит пустой абзац после переменной insert. Мой код выглядит так:

 <?php echo wpautop(stripslashes($lo_homepage_highlight_1_text)) ;?> 

И вернется:

 <p>Lorem ipsum (.....) dolor sit amet. Great rich text</p> <p></p> 

Я не понимаю, чего здесь не хватает.

Solutions Collecting From Web of "WP_editor не применяет wpautop к содержимому одной строки"

Проведя еще несколько исследований, я узнал, что моя функция сохранения не работает. Я думаю, что я должен применить wpautop и wptexturize к этим записям. Моя функция сохранения выглядит так:

  if ( 'save' == $_REQUEST['action'] ) { foreach ($options as $value) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } foreach ($options as $value) { if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } } header("Location: themes.php?page=functions.php&saved=true"); die; } 

Поскольку wp_editor определен в массиве как wysiwyg я должен иметь возможность получить GET-запрос, чтобы определить, отправлено ли поле из wp_editor. Я скорректировал код и теперь он работает:

  if ( 'save' == $_REQUEST['action'] ) { foreach ($options as $value) { if ($_REQUEST[$value['type']] == 'wysiwyg' ) { update_option( $value['id'], wpautop(wptexturize($_REQUEST[ $value['id'] ] ))); } else { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } foreach ($options as $value) { if( isset( $_REQUEST[ $value['id'] ] ) ) { if($_REQUEST[$value['type']] == 'wysiwyg') { update_option( $value['id'], wpautop(wptexturize($_REQUEST[ $value['id'] ] ))); } else { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } } else { delete_option( $value['id'] ); } } } header("Location: themes.php?page=functions.php&saved=true"); die; } 

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