Ошибка в Wordpress
Ничего не понимаю в php (сам по js), и при создании сайта на самом сайте поверх всего выдаёт такой текст ошибки:
Warning: sprintf(): Too few arguments in <ТУТ ПУТЬ К PHP ФАЙЛУ> on line253
Строки кода:
251 $item = !empty($matches)
252 ? preg_replace('/(<a.*?)([\'"])>/i', '$1$2 itemprop=$2item$2>', $item)
253 : sprintf('<a href="' . esc_url($link_item) . '" itemprop="item">%s</a>', $item);
(цифрами 251, 252, 253 обозначены строки).
Кто знает, что делать?
Ответы (1 шт):
Количество аргументов, которое требуется функции sprintf для работы -- кол-во спецификаторов + 1 (самый первый аргумент -- строка со спецификаторами). Если выбрасывается ошибка, что аргументов меньше, чем нужно, то это говорит о том, что спецификаторов в строке больше, чем аргументов, переданных после этой строки. Я вижу в строке только один спецификатор -- %s. Вероятнее всего в esc_url($link_item) содержатся еще спецификаторы, для которых не хватает аргументов. А возникает это из-за того, что esc_url может подменять символы на комбинации символов, похожие на спецификаторы sprintf (пример). Отсюда скорее всего и возникает ваша ошибка.
Я вообще не уверен в необходимости использовать здесь sprintf. Ваша строка не содержит преобразований строки $item, а значит можно заменить функцию обычной конкатенацией строк:
$item = !empty($matches)
? preg_replace('/(<a.*?)([\'"])>/i', '$1$2 itemprop=$2item$2>', $item)
: '<a href="' . esc_url($link_item) . '" itemprop="item">'. $item .'</a>';