Intereting Posts
X-Axis сайта взломан, потому что он находится на иврите Как показать настраиваемую активность для пользовательских типов сообщений в цикле активности buddypress? отображать 20 строк только с Изменить выбор по умолчанию для «Вставить или ссылку»? настраиваемый плагин – настраиваемый тип сообщения – выбираемые параметры для пользователя Удалить последний символ в get_post_meta Лучше ли использовать query_posts, WP_Query или get_posts для создания различных пользовательских циклов внутри страницы? Как использовать WP_Query для получения диапазона сообщений с настраиваемыми полями, в которых есть числа с буквами? Woocommerce Изменение места размещения с помощью обертки Короткие коды не работают Уменьшить или запретить вызов update_meta_cache Элемент, вводящий видимый CSS на страницу, элемент не редактируемый Безопасность WordPress и пользователей Показать пользовательские поля в Quick Edit Параметры строки запроса из настраиваемых полей, несогласованные результаты

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

Есть ли способ контролировать настройку галереи по умолчанию «Ссылка на»? Использование фильтра 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';

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