Поддержка → Проблемы и решения → Работа с functions.php и изображениями постов
Работа с functions.php и изображениями постов
-
Требуется:
Вывести атрибут itemprop=»image» у картинок из галерей в постах с помощью functions.php.
-
Попробуйте так:
function add_itemprop_to_image_attributes( $atts ) { $atts['itemprop'] = 'image'; return $atts; } add_filter( 'wp_get_attachment_image_attributes', 'add_itemprop_to_image_attributes' );
Sergey Biryukov
Да, работает, как нужно. Большое спасибо.
А Вы не в курсе, как добавляемый <style type=’text/css’>тут css code от галерей</style> грузить в голове страницы? А то он сейчас добавляется прямо перед галерей и код получается некрасивым + валидацию не проходит такое дело.
Отключить вывод можно так:
add_filter( 'use_default_gallery_style', '__return_false' );
Если тема поддерживает HTML5, он отключается автоматически.
add_filter( ‘use_default_gallery_style’, ‘__return_false’ );
Спасибо за ответ. Но мне нужно не отключить стили, а перенести их в head.
Можно скопировать эти стили в файл
style.css
илиheader.php
и затем отключить.Можно скопировать эти стили в файл style.css или header.php и затем отключить.
Там стили генерируются в зависимости от id галереи.
Вот код из media.php:
if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) { $gallery_style = " <style type='text/css'> #{$selector} { margin: auto; } #{$selector} .gallery-item { float: {$float}; margin: 0; text-align: center; width: {$itemwidth}%; } #{$selector} img { border: 2px solid #cfcfcf; } #{$selector} .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */ </style>\n\t\t"; }
Там стили генерируются в зависимости от id галереи.
Вы можете изменить стандартный вывод шорткода галереи с помощью фильтра post_gallery.
Там стили генерируются в зависимости от id галереи.
Их можно сделать более общими, используя класс
.gallery
вместо ID.Их можно сделать более общими, используя класс .gallery вместо ID.
Дополню. Для width: {$itemwidth}%; тогда можно добавить что-то вроде этого:
.gallery-item { width: 100%; } .gallery-columns-2 .gallery-item { max-width: 50%; } .gallery-columns-3 .gallery-item { max-width: 33.33%; } .gallery-columns-4 .gallery-item { max-width: 25%; } .gallery-columns-5 .gallery-item { max-width: 20%; } .gallery-columns-6 .gallery-item { max-width: 16.66%; } .gallery-columns-7 .gallery-item { max-width: 14.28%; } .gallery-columns-8 .gallery-item { max-width: 12.5%; } .gallery-columns-9 .gallery-item { max-width: 11.11%; }
float: {$float}; определяется с помощью функции is_rtl(), поэтому для русскоязычных сайтов будет float: left;denisco, спасибо, это действительно помогло.
А как можно решить проблему с валидацией html кода, когда нет подписи под картинкой?
Валидатор выдаёт:Element dl is missing a required instance of child element dd
Я так понимаю, WordPress при создании галереи не создаёт дочернего элемента описания <dd>, если подписи под картинкой не задано из админ-панели. Вот как такое можно решить? На моём сайте подписи под картинками не нужны как раз 🙂
Вот как такое можно решить?
Попробуйте добавить в functions.php строку
add_theme_support('html5', 'gallery');
Тогда WordPress должен начать использовать html5-теги для галереи
'itemtag' => $html5 ? 'figure' : 'dl', 'icontag' => $html5 ? 'div' : 'dt', 'captiontag' => $html5 ? 'figcaption' : 'dd',
add_theme_support('html5', 'gallery');
Не спасло)
Не спасло)
Что именно? Всё равно выводятся теги dl, dt, dd?
Полная версия выглядит так:
add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption' ) );
Что именно? Всё равно выводятся теги dl, dt, dd?
Вот именно, что тэг <dd> не выводится, если он пустой. А его надо выводить при любых обстоятельствах. Хоть он пустой, хоть нет.
add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption' ) );
А вот этот вариант помог. Теперь оно в блоках div. Спасибо большое!
- Тема «Работа с functions.php и изображениями постов» закрыта для новых ответов.