как избежать wp_oembed_get для phpcs

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

Если я попытаюсь использовать echo wp_oembed_get( 'https://www.youtube.com/watch?v=someidhere' ); он работает так, как ожидалось – на странице вы получаете хорошее видео на YouTube.

BUT – phpcs бросает expected next thing to be an escaping function, not wp_oembed_get что не удивительно, поскольку вы должны избегать всего в точке вывода.

Я не могу использовать wp_kses_post() (видео просто не отображается – нет вывода) или любой другой функции экранирования.

Как я могу это сделать, чтобы соответствовать стандартам phpcs?

Solutions Collecting From Web of "как избежать wp_oembed_get для phpcs"

Обратите внимание, что стандарты WPCS для PHPCS не являются «официальными». Я один из сопровождающих, и все, что мы можем сделать, это сделать все возможное, чтобы соответствовать стандартам, которые предлагает WordPress. В этом случае я не уверен, как избежать выхода из wp_oembed_get() . Вероятно, эта функция может быть экранирована, поскольку возвращаемое значение передается через несколько фильтров и может фактически содержать необработанный HTML-код от поставщика oEmbed.

Если вы доверяете провайдеру oEmbed, фильтрам и сетевому соединению, один из вариантов заключается в том, чтобы просто перечислить эту строку кода, например:

 echo wp_oembed_get( 'https://www.youtube.com/watch?v=someidhere' ); // WPCS: XSS OK. 

Однако, если URL-адрес предоставлен пользователем или что-то еще, и вы не считаете, что безопасно доверять возможному провайдеру (-ам) в контексте вашего плагина, тогда вы можете взглянуть на необработанное значение, возвращаемое wp_oembed_get() и посмотреть, как создать белый список HTML-элементов и атрибутов, которые нужно ожидать, перейти к wp_keses() .

Обратите внимание: очевидно, что разработчики ядра WordPress считают, что риск открытия oEmbed не очень велик, и поэтому пользователи могут вставлять ссылки в сообщения, и они будут автоматически внедрены. WPCS просто супер-параноидальный об этих вещах, и разработчик должен знать, когда это может быть ОК, чтобы взять его совет с солью. Одним из самых строгих последователей политики позднего побега является wp.com VIP. Однако, глядя на документацию разработчика, он показывает, что он действительно позволяет использовать wp_oembed_get() , хотя он предлагает использовать свою пользовательскую реализацию wpcom_vip_wp_oembed_get() для добавления функций кеширования.

Поэтому, в конце концов, вы, вероятно, не должны слишком беспокоиться об экранировании wp_oembed_get() . Если вы затронете проблему в репозитории WPCS GitHub , функция может даже добавиться в белый список по умолчанию.