大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
图片信息实际仍存储在posts表中,post_type为attachment
创新互联于2013年创立,先为晋州等服务建站,晋州等地企业,进行企业商务咨询服务。为晋州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
后台相册编辑界面里没有专门的栏目用于填写外链地址,不过可以通过其他字段实现啊
如下图,在alt text字段里填上该图片的外链
接着,需要参考wp-includes/media.php文件里的gallery_shortcode函数来重构gallery的输出
在functions.php中添加代码如下:
add_filter('post_gallery', 'my_post_gallery', 10, 3);
function my_post_gallery( $html = '', $attr, $instance ) {
$post = get_post();
$html5 = current_theme_supports( 'html5', 'gallery' );
$atts = shortcode_atts( array(
'order' = 'ASC',
'orderby' = 'menu_order ID',
'id' = $post ? $post-ID : 0,
'itemtag' = $html5 ? 'figure' : 'dl',
'icontag' = $html5 ? 'div' : 'dt',
'captiontag' = $html5 ? 'figcaption' : 'dd',
'columns' = 3,
'size' = 'thumbnail',
'include' = '',
'exclude' = '',
'link' = 'none'
), $attr, 'gallery' );
$id = intval( $atts['id'] );
if ( ! empty( $atts['include'] ) ) {
$_attachments = get_posts( array( 'include' = $atts['include'], 'post_status' = 'inherit', 'post_type' = 'attachment', 'post_mime_type' = 'image', 'order' = $atts['order'], 'orderby' = $atts['orderby'] ) );
$attachments = array();
foreach ( $_attachments as $key = $val ) {
$attachments[$val-ID] = $_attachments[$key];
}
} elseif ( ! empty( $atts['exclude'] ) ) {
$attachments = get_children( array( 'post_parent' = $id, 'exclude' = $atts['exclude'], 'post_status' = 'inherit', 'post_type' = 'attachment', 'post_mime_type' = 'image', 'order' = $atts['order'], 'orderby' = $atts['orderby'] ) );
} else {
$attachments = get_children( array( 'post_parent' = $id, 'post_status' = 'inherit', 'post_type' = 'attachment', 'post_mime_type' = 'image', 'order' = $atts['order'], 'orderby' = $atts['orderby'] ) );
}
if ( empty( $attachments ) ) {
return '';
}
if ( is_feed() ) {
$output = "\n";
foreach ( $attachments as $att_id = $attachment ) {
$output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n";
}
return $output;
}
$itemtag = tag_escape( $atts['itemtag'] );
$captiontag = tag_escape( $atts['captiontag'] );
$icontag = tag_escape( $atts['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( $atts['columns'] );
$itemwidth = $columns 0 ? floor(100/$columns) : 100;
$float = is_rtl() ? 'right' : 'left';
$selector = "gallery-{$instance}";
$gallery_style = '';
/**
* Filters whether to print default gallery styles.
*
* @since 3.1.0
*
* @param bool $print Whether to print default gallery styles.
* Defaults to false if the theme supports HTML5 galleries.
* Otherwise, defaults to true.
*/
if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) {
$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\n\t\t";
}
$size_class = sanitize_html_class( $atts['size'] );
$gallery_div = "div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'";
/**
* Filters the default gallery shortcode CSS styles.
*
* @since 2.5.0
*
* @param string $gallery_style Default CSS styles and opening HTML div container
* for the gallery shortcode output.
*/
$output = apply_filters( 'gallery_style', $gallery_style . $gallery_div );
$i = 0;
foreach ( $attachments as $id = $attachment ) {
$attr = ( trim( $attachment-post_excerpt ) ) ? array( 'aria-describedby' = "$selector-$id" ) : '';
if ( ! empty( $atts['link'] ) 'file' === $atts['link'] ) {
$image_output = wp_get_attachment_link( $id, $atts['size'], false, false, false, $attr );
} elseif ( ! empty( $atts['link'] ) 'none' === $atts['link'] ) {
$attr['alt'] = get_the_title($post-ID);
$image_output = wp_get_attachment_image( $id, $atts['size'], false, $attr );
$custom_link = trim( strip_tags( get_post_meta( $id, '_wp_attachment_image_alt', true ) ) );
$image_output = sprintf( 'a href="%s" title="%s"%sa',
$custom_link,
$attr['alt'],
$image_output
);
} else {
$image_output = wp_get_attachment_link( $id, $atts['size'], true, false, false, $attr );
}
$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' id='$selector-$id'
" . wptexturize($attachment-post_excerpt) . "
/{$captiontag}";
}
$output .= "/{$itemtag}";
if ( ! $html5 $columns 0 ++$i % $columns == 0 ) {
$output .= 'br style="clear: both" /';
}
}
if ( ! $html5 $columns 0 $i % $columns !== 0 ) {
$output .= "
br style='clear: both' /";
}
$output .= "
/div\n";
return $output;
}
最后的效果:
//去除默认的相册短
remove_shortcode(‘gallery’, ’gallery_shortcode’);
//添加相册的短代码
function itluren_gallery_shortcode(){
global $post ;
if (preg_match_all(‘/\[ga llery([\r\n]*?)ids= “([\s\S]*?)” \]/i’, $post -post_content, $matches )){
$pictures_ids = $matches [2][0];
$pictures_array = explode (‘,’, $pictures_ids );
$all_images_count_num = count ( $pictures_array );
$post_permalink_str =get_permalink( $post -ID);
$options = get_option(‘itluren’);
$post_title_str = $post -post_title;
$baidu_share_sina = $options ['mts_baidu_share_sina'];
$baidu_share_qq = $options ['mts_baidu_share_qq'];
if ( $post_permalink_str != ” ){
$post_permalink_str_u =urlencode( $post_permalink_str );
}
if ( $post -post_title=! ” ){
$post_title_str_u =urlencode( $post -post_title);
}
for ( $i =0; $i count ( $pictures_array ); $i ++){
$picture_number = $i +1;
$image_information =wp_get_attachment_image_src( $pictures_array [ $i ]);
$image_altstr =get_post_meta((int) $pictures_array [ $i ],’_wp_attachment_image_alt’,true);
$image_data =itluren_get_attachment((int) $pictures_array [ $i ]);
$image_caption = $image_data ['caption'];
$image_des = $image_data ['description'];
$image_title = $image_data ['title'];
if ( $image_altstr == ” ){
if ( $image_des != ” ){
$image_altstr = $image_des ;
} else {
$image_altstr =’《’. $post_title_str .’》第’. $picture_number .’张’;
}
}
if ( $image_altstr != ” ){
$image_alt_str_u =urlencode( $image_altstr );
}
$image_url_str_u =urlencode( $image_information [0]);
if ( $image_caption != ” ){
$image_desc = $image_caption ;
} else if ( $image_des != ” ){
$image_desc = $image_des ;
} else {
$image_desc =’暂无说明或者描述’;
}
if ( $image_title != ” ){
$image_a_title = $image_title ;
} else {
$image_a_title =’《’. $post_title_str .’》第’. $picture_number .’张’;
}
用一下几个插件就可以了
1.Coppermine相册
简介:Coppermine Gallery本身是个简便易用的php相册,而后推出的psnGallery插件使得WordPress用户可以很方便地在blog里面插入图片。
好处:psnGallery的功能非常强大,是图片blog用户的首选。
缺陷:Coppermine Gallery缺省安装的界面非常复杂。
2.Menalto Gallery相册
简介:这个相册可能是最受欢迎的网站相册软件了,非常容易安装,而且支持自定义的html镶嵌方式(通过修改html_wrap/wrapper.header文件),有各种上载方式,适合图片文件很多的用户。
好处:功能多,可以让整个网站风格一致。
缺陷:没有专门给WordPress用户的插件,要在blog里引用图片还需要剪贴代码。
3.Pictorialis插件
简介:这个插件是专门为了把WordPress变成图片blog网站而开发的,可以从预设的目录里读取图片文件,直接生成blog正文。
好处:方便需要每天上载图片的用户。
缺陷:不太适合图片非常多,只想在正文中引用少数图片的用户,上载功能比较有限。