Intereting Posts
Почему редактор почтового контента всегда расширялся? Как отключить определенную страницу для определенного пользователя call_user_func_array () после миграции сайта с помощью InstantWP Как настроить тип персонализированного сообщения для просмотра будущих сообщений Отредактируйте функцию the_content (), чтобы добавить обертку div Удаление специальных символов уже загруженного изображения Нужно ли удалять версию подключаемого модуля, если вы просто обновляете атрибут «Проверено до»? Упростить конец администратора Как получить переменную из файла function.php в файл цикла переносить комментарии из старой базы данных в новую базу данных Показывать количество просмотров за последние 48 часов Должен ли я использовать пользовательскую таксономию или пользовательский тип сообщения Авторы: страница авторов Перенести пользовательские поля на страницу общих настроек в новое местоположение Как создать редактор кода для моего плагина.?

Верхняя ссылка галереи по умолчанию

Есть ли способ контролировать настройку галереи по умолчанию «Ссылка на»? Использование фильтра image_default_link_type в файле functions.php работает с вставкой отдельных изображений в сообщения, но, похоже, это не влияет на галереи …

Solutions Collecting From Web of "Верхняя ссылка галереи по умолчанию"

К сожалению, нет законного способа контролировать это. Но есть грязный способ сделать это … Если вы выберете этот маршрут, вам нужно будет:

  • клонировать стандартную функцию gallery_shortcode
  • добавьте значение по умолчанию для параметра $attr['link']
  • post_gallery свою клонированную функцию в фильтр post_gallery

Окончательный результат будет выглядеть так:

 add_filter( 'post_gallery', 'wpse8170_gallery_shortcode', 10, 2 ); function wpse8170_gallery_shortcode( $output, $attr ) { $post = get_post(); static $instance = 0; $instance++; // override default link settings if ( empty( $attr['link'] ) ) { $attr['link'] = 'none'; // set your default value here } if ( !empty( $attr['ids'] ) ) { // 'ids' is explicitly ordered, unless you specify otherwise. if ( empty( $attr['orderby'] ) ) $attr['orderby'] = 'post__in'; $attr['include'] = $attr['ids']; } // We're trusting author input, so let's at least make sure it looks like a valid orderby statement if ( isset( $attr['orderby'] ) ) { $attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] ); if ( !$attr['orderby'] ) unset( $attr['orderby'] ); } extract(shortcode_atts(array( 'order' => 'ASC', 'orderby' => 'menu_order ID', 'id' => $post ? $post->ID : 0, 'itemtag' => 'dl', 'icontag' => 'dt', 'captiontag' => 'dd', 'columns' => 3, 'size' => 'thumbnail', 'include' => '', 'exclude' => '' ), $attr, 'gallery')); $id = intval($id); if ( 'RAND' == $order ) $orderby = 'none'; if ( !empty($include) ) { $_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); $attachments = array(); foreach ( $_attachments as $key => $val ) { $attachments[$val->ID] = $_attachments[$key]; } } elseif ( !empty($exclude) ) { $attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); } else { $attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); } if ( empty($attachments) ) return ''; if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $att_id => $attachment ) $output .= wp_get_attachment_link($att_id, $size, true) . "\n"; return $output; } $itemtag = tag_escape($itemtag); $captiontag = tag_escape($captiontag); $icontag = tag_escape($icontag); $valid_tags = wp_kses_allowed_html( 'post' ); if ( ! isset( $valid_tags[ $itemtag ] ) ) $itemtag = 'dl'; if ( ! isset( $valid_tags[ $captiontag ] ) ) $captiontag = 'dd'; if ( ! isset( $valid_tags[ $icontag ] ) ) $icontag = 'dt'; $columns = intval($columns); $itemwidth = $columns > 0 ? floor(100/$columns) : 100; $float = is_rtl() ? 'right' : 'left'; $selector = "gallery-{$instance}"; $gallery_style = $gallery_div = ''; if ( apply_filters( 'use_default_gallery_style', true ) ) $gallery_style = " <style type='text/css'> #{$selector} { margin: auto; } #{$selector} .gallery-item { float: {$float}; margin-top: 10px; 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>"; $size_class = sanitize_html_class( $size ); $gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>"; $output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div ); $i = 0; foreach ( $attachments as $id => $attachment ) { if ( ! empty( $attr['link'] ) && 'file' === $attr['link'] ) $image_output = wp_get_attachment_link( $id, $size, false, false ); elseif ( ! empty( $attr['link'] ) && 'none' === $attr['link'] ) $image_output = wp_get_attachment_image( $id, $size, false ); else $image_output = wp_get_attachment_link( $id, $size, true, false ); $image_meta = wp_get_attachment_metadata( $id ); $orientation = ''; if ( isset( $image_meta['height'], $image_meta['width'] ) ) $orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape'; $output .= "<{$itemtag} class='gallery-item'>"; $output .= " <{$icontag} class='gallery-icon {$orientation}'> $image_output </{$icontag}>"; if ( $captiontag && trim($attachment->post_excerpt) ) { $output .= " <{$captiontag} class='wp-caption-text gallery-caption'> " . wptexturize($attachment->post_excerpt) . " </{$captiontag}>"; } $output .= "</{$itemtag}>"; if ( $columns > 0 && ++$i % $columns == 0 ) $output .= '<br style="clear: both" />'; } $output .= " <br style='clear: both;' /> </div>\n"; return $output; } 

Теперь есть более простое решение:

 function my_gallery_default_type_set_link( $settings ) { $settings['galleryDefaults']['link'] = 'file'; return $settings; } add_filter( 'media_view_settings', 'my_gallery_default_type_set_link'); 

Они добавили фильтр для настройки этого значения по умолчанию (и других значений, связанных с новым всплывающим окном для массовой загрузки) в WP 4.0 ( trac ).

Старый вопрос, но все равно получающий поисковый трафик для всех остальных:

Вы можете выполнить то, что вы описываете, фильтруя атрибуты shortcode галереи. Также полезно, если вы хотите изменить размер изображения по умолчанию, столбцы и т. Д.

 function gallery_should_link_to_files($out, $pairs, $atts) { $atts = shortcode_atts( array( 'link' => 'file' ), $atts ); $out['link'] = $atts['link']; return $out; } add_filter('shortcode_atts_gallery', 'gallery_should_link_to_files', 10, 3); 

Фильтр плохо документирован в Codex: http://codex.wordpress.org/Function_Reference/shortcode_atts_gallery

Тем не менее, возможность изменить атрибут «link» была добавлена ​​в начале 2013 года: https://core.trac.wordpress.org/changeset/25665/trunk

Это факт. Как указано выше, в боковой панели будет отображаться, как будто галерея ссылается на «страницу прикрепления». Однако, как только вы публикуете сообщение и нажимаете на изображение, вы заметите, что оно действительно связано с медиа-файлом.

Я сделал этот код еще дальше и создал плагин. Это функциональность, в которой я хочу оставаться конкретным сайтом, а не конкретной.

Чтобы создать плагин, я выполнил простые инструкции на этой странице . Я создал файл с именем gallery-link-to-file.php в gallery-link-to-file.php wp-content/plugins . Затем я вложил в него вышеуказанный код и изменил $attr['link'] = 'none'; to $attr['link'] = 'file';

Затем я активировал плагин, и он работал как шарм.