Поддержка Проблемы и решения Шорткоды в WordPress 4.2.3

  • плин, оказалось, что и меня задели изменения с шорткодами.
    я в записях использую свой шорткод вида:

    [plugin name='add-posts-to-pages' version='1.4.1' date='08.08.2014']

    в самом шорткоде использую сторонний шорткод от плагина так:

    $check_info_plugin = do_shortcode ('[wp-plugin-info plugin_id="'.$name.'" info_id="name"]');

    и вот эта хрень больше в 4.2.3 не работает.
    выдает [wp-plugin-info plugin_id=

    я почитал на счет изменений в шорткодах в 4.2.3, но так и не понял, как эту фигню теперь обойти.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • помогло комментирование строчки:

    $content = do_shortcodes_in_html_tags( $content, $ignore_html );

    в wp-includes/shortcodes.php
    но править движок мне категорически не нравится.

    из комментов прочитал советы вроде менять код типа

    a href="[shortcode value="foo"]"

    на

    a href='[shortcode value="foo"]'

    ни хрена не помогает.

    разобрался.
    рецепт оказался прост — никаких знаков дюйма.
    то есть помогла замена

    $check_info_plugin = do_shortcode ('[wp-plugin-info plugin_id="'.$name.'" info_id="name"]');

    на

    $check_info_plugin = do_shortcode ('[wp-plugin-info plugin_id=\''.$name.'\' info_id=\'name\']');

    но я категорически возмущен тем, что такое важное изменение прилетело при «минорном» обновлении движка.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Если двойные кавычки сделать внешними, можно обойтись без слешей, т.е. так тоже должно работать:

    $check_info_plugin = do_shortcode( "[wp-plugin-info plugin_id='" . $name . "' info_id='name']" );

    но я категорически возмущен тем, что такое важное изменение прилетело при «минорном» обновлении движка.

    Не вы один 🙂 Обычно в подобных ситуациях предпринимается много усилий, чтобы сохранить обратную совместимость и заранее уведомить авторов плагинов о возможных изменениях.

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

    Если двойные кавычки сделать внешними, можно обойтись без слешей, т.е. так тоже должно работать:

    вероятно, но я уже боюсь двойные кавычки использовать.
    вдруг в следующей версии движка и это перестанет работать?

    я, конечно, сам виноват — в шорткоде не должно быть знаков дюйма, а я писал шорткод несколько лет назад и как-то упустил этот момент.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Шорткоды в WordPress 4.2.3» закрыта для новых ответов.