Intereting Posts
Пользовательские типы сообщений. Как избавиться от редактора (-meta box) Функциональность контроллера – Пользователь не зарегистрирован / перенаправлен на страницу регистрации (не wp_login) Отключить wordpress от включения jQuery в разделе заголовка Как обновить общую цену завершенного заказа в woocommerce? Как хранить метатеги сообщений в массиве shortcode, заставляющий the_content () возвращать пустое? Создание плагина для изменения слизняков Каков наилучший способ для дезинфекции данных? Как изменить функцию в родительской теме через дочерние темы functions.php Как добавить опцию «создать страницу» для пользователей в приятеле, таком как facebook? Изменение URL-адреса поиска? Добавить пользовательские поля в шаблон страницы, администратор Включение специального типа сообщений в виджет Архивы get Insert id для мета поля Задайте значение настраиваемого поля при публикации или обновлении публикации

Проверка данных: всегда избегать позднего / выходного кода HTML

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

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

<?php if(get_post_meta( get_the_ID(), "portfolio-lightbox", true ) == '1') { $portfoliolink = '<a href="'. esc_url(wp_get_attachment_url( get_post_thumbnail_id() )) .'" class="prettyPhoto" rel="prettyPhoto[portfolio]" title="'.esc_attr(get_the_title()).'">'; } else { $portfoliolink = '<a href="'. esc_url(get_permalink()) .'" title="'.esc_attr(get_the_title()).'">'; } echo $portfoliolink; 

Им не нравится echo $portfoliolink; потому что это не ускользнуло. Существуют несколько операторов if, которые содержат переменные с кодом HTML.

Я не люблю использовать wp_kses из-за производительности. И esc_html() испортит html-код.

Может быть, я просто упустил что-то очевидное здесь. Можете ли вы помочь?

Solutions Collecting From Web of "Проверка данных: всегда избегать позднего / выходного кода HTML"

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

В настоящее время существует общее соглашение между большинством разработчиков WordPress на профессиональном уровне, которые в последнее время являются золотым стандартом для обеспечения безопасности вывода:

  • 10up on Late Escaping

  • Кодекс WordPress по санитарии выпуска

  • WordPress VIP на Always Escaping Late

Что касается того, как решить вашу конкретную проблему, я не уверен на 100%, что рынок скажет, но один подход, который они могут принять, – это написать свои собственные теги шаблонов для каждого из мест, где вы выводите HTML-код, который вам не нужен для запуска через wp_kses_post() и сохраните их в template-tags.php в своей теме и укажите их в этот файл во время просмотра кода тегов шаблона.

Вот одна из функций, которая может выглядеть так: все правильные выходные экраны:

 function the_portfolio_link( $post_id ) { return '<a href="' . esc_url( get_post_permalink( $post_id ) ) . "'>" . esc_html( get_the_title( $post_id ) ) . '</a>'; } 

Другим подходом может быть запись всего HTML, который вы хотите использовать повторно, как частичные шаблоны. Ниже следует функция, называемая the_partial() для загрузки ваших частичных шаблонов, которые вы могли бы включить в файл functions.php вашей темы:

 function the_partial( $template_file, $_partial_file, $args = array() ) { $_partial_file = dirname( $template_file ) . "/partials/{$_partial_file}.php"; extract( $args, EXTR_SKIP ); unset( $args ); require ( $_partial_file ); } 

И тогда вы можете называть ваш частичный шаблон из файла шаблона темы:

 <?php the_partial( __FILE__, 'portfolio-link', array( 'post_id' => $post->ID ) ); ?> 

Тем не менее, я всегда ненавидел поздно бежать, потому что это ставит нагрузку на программиста, а не на компьютер; разве последний не должен был сделать нас более продуктивными? 🙂 Плюс поздний побег, если очень против DRY

Поскольку последнее ускользание беспокоило меня так сильно, я работал над лучшим решением и уже несколько лет использую в клиентских приложениях. Решение заключается в использовании объектов для типов сообщений, таксономических терминов, пользовательских ролей с помощью объектов Module и View, где объекты View автоматически выходят из методов модуля, основанных на соглашениях об именах. Недавно я выпустил библиотеку WPLib с открытым исходным кодом, которая предлагает это лучшее решение для других пользователей.

Мы все еще находимся в стадии бета-версии версии 1.0, но библиотека успешно используется на многочисленных клиентских сайтах; хотел бы получить ваше понимание концепции.

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

BTW, предложение шаблона, которое я дал, в значительной степени запекается в WPLib и является лучшей практикой, потому что мы никогда не хотим, чтобы HTML-код, специфичный для сайта, был зарыт в функцию или метод класса, где они должны знать PHP, чтобы найти и понять его.

Надеюсь это поможет?