Переключение между HTML и визуальным редактором полностью удаляет содержимое страницы

9 апр. 2011 г., 18:22:49
Просмотры: 2.07K
Голосов: 1

У меня есть страница (не запись в блоге), на которую нужно встроить iframe (для "интеграции" каталога товаров внешнего сервиса). Я добавил код iframe в HTML-редакторе и сохранил страницу. Проверил - всё работало.

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

После этого содержимое поста полностью исчезло. Всё, что я вводил в редакторе (в HTML или нет), было удалено, и пост стал пустым, как будто только что создан. Пришлось откатываться к предыдущей версии для восстановления.

Пока что решение - отключить визуальный редактор, но у меня есть нетехнический партнёр, и это не идеальное долгосрочное решение.

Есть ли способ контролировать это поведение WordPress? Я использую WordPress 3.1.1

Спасибо

3
Комментарии

Использовать шаблон страницы вместо этого? Это полностью избегает проблемы с удалением iframe редактором.

t31os t31os
9 апр. 2011 г. 19:49:31

Это не относится только к страницам — то же самое произойдет и с записью. Я удалил тег page и добавил тег html.

Dougal Campbell Dougal Campbell
10 апр. 2011 г. 16:35:22

Да, я понимаю это, моя мысль в том, что этот пользователь хочет конкретно вставить iframe на страницу, и использование именованного шаблона страницы полностью решит проблему.

t31os t31os
11 апр. 2011 г. 15:00:24
Все ответы на вопрос 2
2

В редакторе WordPress плохая обработка iFrame или сложного HTML при переключении между HTML и визуальным редактором (я сталкивался с этой проблемой много раз).

Лучший вариант — либо добавить шаблон страницы (page-{id}.php) с iFrame, либо использовать плагин, который добавляет шорткоды для iFrame, например:

http://wordpress.org/extend/plugins/easy-iframe-loader/

Это особенно полезно в среде, где контент редактируют люди без технических знаний.

9 апр. 2011 г. 23:38:47
Комментарии

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

Кто-нибудь ещё, кроме меня, хочет, чтобы TinyMCE/WordPress просто принимал введённый HTML и оставлял его как есть?

red4d red4d
10 апр. 2011 г. 21:55:19

@red4d — Мой плагин делает именно то, что вы хотели бы от WordPress. Я, как и вы, хотел такого поведения и обнаружил, что это возможно с помощью кропотливой работы с ядром WP — http://wordpress.org/extend/plugins/preserved-html-editor-markup/

Marcus Pope Marcus Pope
1 сент. 2012 г. 01:12:39
1

Я уже давно использую этот код в своем локальном плагине. Или вы можете просто добавить его в файл functions.php вашей темы:

// Разрешить iframe в TinyMCE
function tinymce_add_iframe( $arr = array() ) {
  $extra = 'iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]';

  if ( isset( $arr['extended_valid_elements'] ) ) {
    // добавляем к существующему значению
    $arr['extended_valid_elements'] .= ',' . $extra;
  } else {
    // устанавливаем значение
    $arr['extended_valid_elements'] = $extra;
  }

  return $arr;
}

add_filter('tiny_mce_before_init','tinymce_add_iframe');

Этот код сообщает TinyMCE (визуальному редактору), что нужно разрешить тег iframe и все его атрибуты.

10 апр. 2011 г. 15:19:41
Комментарии

Это мой предпочтительный тип решения. Вы должны упаковать это как плагин и загрузить его в каталог расширений ;) Кажется, работает довольно хорошо (я добавил его в functions.php вместо создания плагина). Спасибо!

red4d red4d
10 апр. 2011 г. 21:52:48