Как предотвратить изменения iframe в визуальном редакторе?

18 сент. 2018 г., 16:12:05
Просмотры: 303
Голосов: 2

У меня есть этот iframe и JavaScript, встроенные в запись:

<iframe onload="fa_iframeresize.do(this);" src="https://example.com/calc.php?tp=dif&cl=beleggen&h=1&wf=19370&country=NL" scrolling="no" width="100%" style="padding:0px;margin:0px;border-width:0px;" frameborder="0">
</iframe>
<script type="text/javascript" src="//example.com/iframeResizeMe.min.js.gz"></script>

Но когда я перехожу в визуальный редактор, HTML немного изменяется таким образом, что код example.com больше не может его обработать:

<iframe style="padding: 0px; margin: 0px; border-width: 0px;" src="https://example.com/calc.php?tp=dif&amp;cl=beleggen&amp;h=1&amp;wf=19370&amp;country=NL" width="100%" frameborder="0" scrolling="no">
</iframe>
<script type="text/javascript" src="//example.com/iframeResizeMe.min.js.gz"></script>

Есть ли способ предотвратить изменения блока HTML в визуальном редакторе?

Я пробовал расширение для iframe, но оно не справилось с задачей должным образом. Я также хотел бы избежать создания собственного плагина для этого.

В идеале мне хотелось бы что-то вроде <!-- NOREFORMAT --><iframe></iframe><script></script><!-- /NOREFORMAT -->.

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

Обратите внимание, что единственная причина, по которой вы можете вставить iframe напрямую — это то, что вы администратор с опасной возможностью unfiltered_html. Вместо этого используйте шорткод для iframe и подключите скрипт, который будет привязываться к событию onLoad всех iframe, вместо добавления опасных встроенных атрибутов JS-скриптов.

Tom J Nowell Tom J Nowell
18 сент. 2018 г. 16:15:21

Можно разрешить тег iframe для редактора tinyMCE, см. https://wordpress.stackexchange.com/a/3067/170 Однако я считаю, что вам следует создать плагин, который добавит шорткод для вставки этого в контент. Таким образом, у вас будет более корректный контент, который проще поддерживать, если вы захотите изменить этот код или удалить его из контента в будущем.

bueltge bueltge
12 дек. 2018 г. 14:55:33

Посмотрите по ссылке... https://wordpress.stackexchange.com/questions/243780/tinymce-removes-iframe-attributes-width-and-height

Ashvin Monpara Ashvin Monpara
14 дек. 2018 г. 06:37:46
Все ответы на вопрос 1
0
    add_shortcode('custom_iframe_shortcode', 'build_iframe');
function build_iframe($atts) {
    // Устанавливаем значения по умолчанию
    $defaults = array(
        'source' => 'https://example.com/calc.php?tp=dif&cl=beleggen&h=1&wf=19370&country=NL',
        'script_source' => '//example.com/iframeResizeMe.min.js.gz'
    );
    // Объединяем переданные атрибуты с значениями по умолчанию
    $args = shortcode_atts($defaults, $atts);

    // Начинаем буферизацию вывода
    ob_start(); ?>
    <iframe onload="fa_iframeresize.do(this);" src="<?php echo $args['source']; ?>" scrolling="no" width="100%" style="padding:0px;margin:0px;border-width:0px;" frameborder="0">
    </iframe>
    <script type="text/javascript" src="<?php echo $args['script_source']; ?>"></script>
    <?php // Возвращаем содержимое буфера и очищаем его
    return ob_get_clean();
}

затем вызывайте этот шорткод так: [build_iframe] или [build_iframe source="https://blah" script_source="https://blah/blah.js"]

17 дек. 2018 г. 18:58:15