Intereting Posts
Скопируйте ценовые категории в настраиваемое поле Контактная форма 7 – Отладка отправки сообщений об отказе по электронной почте Необходимо проверить is_archive во время init Добавьте в цикл привязки URL-адрес wp_link_pages сообщения Где я могу изменить положение стиля.css? Отслеживать доход от рекламы в блоге и странице в WordPress? query.php – несколько функций is_category Получить путь к изображениям: загрузка изображения, но не прилагается Показать родительские категории и подкатегории, но не категории больших детей Прикрепленные сообщения на каждой странице с разбивкой на страницы преобразование формата поля пользовательского поля Как я могу определить иерархические отношения за пределами детей (внук, правнук и т. Д.)? Как загрузить библиотечные скрипты в admin из плагинов в оболочке noConflict? WordPress: использование AJAX для получения сообщений и содержимого боковой панели во внешнем приложении Перенаправить канал на страницу 404

Эхо-функция внутри функции

Мне нужно создать короткий код, чтобы я мог вставить короткий код внутри параметров плагина мобильного меню, плагин не принимает PHP, поэтому я не могу сделать <span class="header-cart-total"><?php echo edd_cart_total(); ?></span> <span class="header-cart-total"><?php echo edd_cart_total(); ?></span>

Проблема, с которой я столкнулась, – echo'ing edd_get_cart_total() которая вызывает белый экран на моем веб-сайте. Я должен повторить его, или общая сумма корзины не отображается полностью отформатированной. Как я его эхо? Это в моем файле functions.php:

 function eddminicartfunc() { return '<div class="mobilemenucart"> <i class="fa fa-shopping-cart"></i> <span class="header-cart-total"> ' . echo edd_get_cart_total() . ' </span> <span class="header-cart edd-cart-quantity"> ' . edd_get_cart_quantity() .' </span> </div>'; } add_shortcode('eddminicart', 'eddminicartfunc'); 

echo – это языковая конструкция PHP, которая выдает значения в выходной буфер. Он не имеет возвращаемого значения, поэтому объединение его со строкой вызовет все после немедленного отправки echo в выходной буфер и все до echo чтобы составить конкатенированную строку. Это такое неправильное использование echo что сам PHP на самом деле этого не позволяет – если вы включили отладку WordPress, вы увидите ошибку, аналогичную

Ошибка анализа: синтаксическая ошибка, неожиданное «эхо» (T_ECHO)

Эта ошибка вызывает ваш белый экран – если не в режиме отладки, WordPress подавляет вывод ошибки, чтобы не подвергать потенциально конфиденциальную информацию конечным пользователям.

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

Включение echo перед edd_get_cart_total() не приводит к форматированию валюты. Для того, чтобы убедиться, я прорыл плагин в исходном коде вопроса . Скорее, более вероятно, что некоторые функции подключены к фильтру edd_get_cart_total для форматирования вывода в шаблонах (таким образом, форматируя общее количество, когда вы использовали его в шаблоне header.php ), однако в контексте короткого кода, который фильтр не подключен.

Удобно, что плагин предоставляет ebb_cart_total() которая всегда будет выводить общую строку в формате валюты. Первый аргумент функции – это $echo который по умолчанию является истинным, и заставит функцию отображать общее количество, а не возвращать его – что, как было описано ранее, не является чем-то, что вы хотите сделать в коротком коде, поэтому установите этот аргумент на false чтобы функция возвращала строку, которую вы можете объединить с остальной частью вашей разметки короткого кода.

Все вместе:

 function eddminicartfunc() { return '<div class="mobilemenucart"> <i class="fa fa-shopping-cart"></i> <span class="header-cart-total"> ' . edd_cart_total( false ) . ' </span> <span class="header-cart edd-cart-quantity">' . edd_get_cart_quantity() . '</span> </div>'; } add_shortcode( 'eddminicart', 'eddminicartfunc' ); 

Я не уверен, где вы пытаетесь вставить свой код и какие ограничения у него есть, но попробуйте его так и посмотрите, работает ли он?

 function eddminicartfunc() { $foo = '<div class="mobilemenucart"> <i class="fa fa-shopping-cart"></i> <span class="header-cart-total"> ' . echo edd_get_cart_total() . ' </span> <span class="header-cart edd-cart-quantity"> ' . edd_get_cart_quantity() .' </span> </div>'; return $foo; } add_shortcode('eddminicart', 'eddminicartfunc');