Intereting Posts
Создайте отдельный шаблон для общей пользовательской таксономии с общими условиями Многопользовательская загрузка в параметры темы Как отобразить имя пользователя, роль и имя сайта с помощью тегов HTML внутри уведомления панели мониторинга? Как предотвратить загрузку изображений с несколькими размерами Такой странный результат wp_query и has_posts База данных SQL, повторяющиеся таблицы? Неустранимая ошибка: get_header (); Получение всех пользовательских метаданных от пользователя Изменение таблицы wp_post и производительности / скорости post_meta Расширение xml rpc – лучшая практика Добавить текст ссылки Вернуться к разделу Вставка / редактирование ссылки Подстановочный знак для поиска wp-cli Как вывести изображение или значок для выбранного флажка в специальном сообщении Как отключить 3,3 подсказки? Как импортировать CSV в пользовательские поля типа пользовательского сообщения?

Стандарты кодирования PHP, виджеты и санитария

У меня проблема с пользовательскими виджетами и стандартами кодирования WordPress. Когда вы создаете собственный виджет, ваш класс должен иметь метод «виджета», который отображает виджет. Что-то вроде:

<?php public function widget( $args, $instance ) { echo $args['before_widget']; ?> <span><?php echo esc_html( 'Great widget', 'text-domain' ); ?></span> <?php echo $args['after_widget']; } ?> 

Хотя это совершенно функционально, это не будет проходить тесты PHP-анализатора с помощью стандартов кодирования WordPress, поскольку $args['after_widget']; и $args['before_widget']; не сбежали …

Что я делаю не так?

Solutions Collecting From Web of "Стандарты кодирования PHP, виджеты и санитария"

Эти аргументы содержат произвольный HTML и не могут быть надлежащим образом экранированы. Это, по сути, ограничение на то, как был разработан код Widgets, и вы можете видеть в основных классах Widget, что на них не выполняется.

Уроки для изучения:

  • Ядро WP не последовательно придерживается своих собственных стандартов кодирования (и получение там не считается целевым усилием);
  • прохождение вокруг кусков HTML – это плохая идея, в вашем собственном коде прохождение данных и рендеринг соответствующим образом с правильным экранированием.

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

В любом случае в большинстве таких инструментов есть способ проинструктировать linter / sniffer игнорировать эту строку или функцию.

Кстати, стандарты, о которых вы говорите, вероятно, являются VIP-стандартами wordpress.com, а не wordpress one – https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/