Вопрос или проблема
Мне нравится предотвращать вывод подписей в моей пользовательской функции галереи. Я мог бы просто скрыть их с помощью CSS, но это не кажется правильным.
Подпись передается из media.php вот в этой строке.
if ( $captiontag && trim($attachment->post_excerpt) ) {
$output .= "
<{$captiontag} class="wp-caption-text gallery-caption">
" . wptexturize($attachment->post_excerpt) . "
</{$captiontag}>";
}
Я мог бы просто удалить . wptexturize($attachment->post_excerpt) .
, но как только я обновлю, это исчезнет. Я хотел бы сделать это без копирования всей функции галереи.
WordPress генерирует alt тег, используя поле подписи, что является желаемым.
Есть ли способ?
Мой код функции
function modified_gallery_shortcode( $attr ) {
$attr['size'] = "thumbnail";
$attr['link'] = "file";
$attr['itemtag'] = "";
$attr['icontag'] = "";
$attr['captiontag'] = "";
$output = gallery_shortcode( $attr );
$output = strip_tags( $output, '<a><img><li><p>' );
$from = array(
"class="gallery-item"",
"class="gallery-icon landscape"",
"a href="https://wordpress.stackexchange.com/questions/156633/,"class="wp-caption-text gallery-caption""
);
$to = array(
"",
"",
"a class=\"swipebox\" rel=\"group\" href=",
"",
);
$output = str_replace( $from, $to, $output );
$output = sprintf( '<div class="gallery">%s</div>', $output );
return $output;
}
add_shortcode( 'gallery', 'modified_gallery_shortcode' );
если ты можешь сделать это простым способом, то почему бы и нет?
ты можешь использовать jquery для этого, например:
( function( $ ) {
function function_name() {
$( '.gallery-caption').css({display:'none'});
}
function_name();
} )( jQuery );
Ответ или решение
Чтобы убрать подписи из вашего пользовательского шорткода галереи в WordPress и сделать это правильно, вам нужно вмешаться в работу функции, отвечающей за вывод галереи, однако без прямого редактирования файлов ядра или установки стилей CSS для скрытия. Это позволит сохранить готовность к отключению и обновлению, не теряя внесённые вами изменения.
Решение через пользовательский шорткод
В WordPress по умолчанию используется функция gallery_shortcode
, которая отвечает за вывод галерей. Чтобы удалить подписи из галереи, можно воспользоваться параметром captiontag
, передавая ему пустое значение.
Вот детальный пример того, как это сделать:
function modified_gallery_shortcode( $attr ) {
// Установка параметров галереи
$attr['size'] = "thumbnail";
$attr['link'] = "file";
$attr['itemtag'] = "div";
$attr['icontag'] = "div";
$attr['captiontag'] = ""; // Устанавливаем пустой тег для подписи
// Генерация HTML для галереи
$output = gallery_shortcode( $attr );
// Удаление ненужных тегов и классов
$output = strip_tags( $output, '<a><img><div><p>' );
// Замена классов, если нужно
$from = array(
'class="gallery-item"',
'class="gallery-icon landscape"',
);
$to = array(
'',
'',
);
$output = str_replace( $from, $to, $output );
$output = sprintf('<div class="gallery">%s</div>', $output );
return $output;
}
// Регистрируем шорткод
add_shortcode( 'gallery', 'modified_gallery_shortcode' );
Пояснение кода
-
Параметры галереи: Создаются параметры для шорткода, включая
captiontag
, установленный в пустое значение (""
). Это означает, что подписи не будут выводиться. -
Генерация HTML: Вызывается стандартный шорткод галереи (
gallery_shortcode
), и возвращаемый код очищается от ненужных тегов с помощьюstrip_tags
. -
Замена классов: Если необходимо, можно убрать классы, которые вам не нужны, с помощью
str_replace
. -
Регистрация шорткода: В конце код регистрирует новый шорткод, который заменяет стандартный.
Заключение
Данное решение позволяет вам избежать редактирования ядра WordPress и взять под контроль вывод галереи. Если WordPress обновится, ваше изменение останется актуальным, что крайне важно для поддержания безопасности и целостности веб-сайта.
Следуя этим шагам, вы сможете успешно удалить подписи из вашей кастомной галереи без каких-либо последствий и усилий.