Почему php делит атрибут data-img на два?
<div class="block-services__items"> <?php foreach ($services as $service) : ?> <a data-img="<?= $service['img']['url'] ?>" href="<?= $service['link'] ?>" class="block-services__item"> </a> <?php endforeach; ?> </div> |
<div class="block-services__items"> <?php foreach ($services as $service) : ?> <a data-img="<?= $service['img']['url'] ?>" href="<?= $service['link'] ?>" class="block-services__item"> </a> <?php endforeach; ?> </div>
в DOM рендерится так
<a href="/metalloizdeliya-na-zakaz" class="block-services__item" data="-" img="/app/webp-express/webp-images/uploads/2022/12/cbbd0394d5c036d699faccbc018cc7d9.jpg.webp"> |
<a href="/metalloizdeliya-na-zakaz" class="block-services__item" data="-" img="/app/webp-express/webp-images/uploads/2022/12/cbbd0394d5c036d699faccbc018cc7d9.jpg.webp">
Дополнительно:
php тут не при чем, копайте дальше
Ответы:
Не делит.
https://ideone.com/Ga1OM2
- у меня этот сайт не работает ни с какого устройства
- Дмитрий, а через vpn?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
PHP не делит
data-imgна два атрибута. Так происходит из-за неверно сформированного HTML. В вашем примере внутри атрибута есть лишние пробелы после открывающей кавычки и, возможно, значение выводится неэкранированным. Браузер пытается починить разметку и в итоге видит отдельные атрибутыdataиimg.Пишите атрибут без пробелов между именем и значением, и обязательно используйте
esc_url()/esc_attr():<div class="block-services__items"> <?php foreach ($services as $service) : ?> <a data-img="<?php echo esc_url($service['img']['url'] ?? ''); ?>" href="<?php echo esc_url($service['link'] ?? '#'); ?>" class="block-services__item"> </a> <?php endforeach; ?> </div>
Если пишете короткий echo-синтаксис, тоже нормально:
<a data-img="<?= esc_url($service['img']['url'] ?? '') ?>" href="<?= esc_url($service['link'] ?? '#') ?>" class="block-services__item"></a>
Проверьте исходный HTML через «Просмотр кода страницы», а не только DOM в инспекторе. DOM уже показывает то, как браузер исправил битую разметку. Если в исходнике атрибут выглядит нормально, тогда ищите JS, который изменяет элемент после загрузки. Но по описанию это именно проблема HTML-вывода.
Также проверьте, что в URL картинки нет кавычек или других символов, которые могут закрыть атрибут раньше времени. Если значение приходит из ACF, Carbon Fields или массива темы, оно всё равно должно проходить через
esc_url(). Для произвольных data-атрибутов с текстом используйтеesc_attr(), а для ссылок и изображений —esc_url().