2013-10-20 74 views
0

我正在修改WP安装过程。在Wordpress中删除图库图像的宽度和高度

我正在使用修改后的库简码来显示库和一个过滤器来删除宽度和高度参数,这是为了保持页面响应所必需的。

我的问题是,当我链接到附件页面(默认)时,画廊显示正常。但是,当我将缩略图链接到文件时,宽度和高度参数不会被过滤器删除。

这是过滤器:

/** remove gallery height and width*/ 
add_image_size('my_gallery_shortcode', 200, 120, true); 

add_filter('wp_get_attachment_link', 'remove_img_width_height', 10, 4); 

function remove_img_width_height($html, $post_id, $post_image_id, $post_thumbnail) { 
if ($post_thumbnail=='my_gallery_shortcode'){ 
$html = preg_replace('/(width|height)=\"\d*\"\s/', "", $html); 
} 
return $html; 
} 

/** END remove gallery height and width*/ 

这是自定义库代码:

/** custom gallery code */ 

add_shortcode('gallery', 'my_gallery_shortcode');  
function my_gallery_shortcode($attr) { 
    $post = get_post(); 

static $instance = 0; 
$instance++; 

if (! empty($attr['ids'])) { 
    // 'ids' is explicitly ordered, unless you specify otherwise. 
    if (empty($attr['orderby'])) 
     $attr['orderby'] = 'post__in'; 
    $attr['include'] = $attr['ids']; 
} 

// Allow plugins/themes to override the default gallery template. 
$output = apply_filters('post_gallery', '', $attr); 
if ($output != '') 
    return $output; 

// 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->ID, 
    'itemtag' => 'dl', 
    'icontag' => 'dt', 
    'captiontag' => 'dd', 
    'columns' => 3, 
    'size'  => 'medium', 
    'include' => '', 
    'exclude' => '' 
), $attr)); 

$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 = ''; 

$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) { 
    $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false); 

    $output .= "<{$itemtag} class='gallery-item'>"; 
    $output .= " 
     <{$icontag} class='gallery-icon'> 
      $link 
     </{$icontag}>"; 
    if ($captiontag && trim($attachment->post_excerpt)) { 
     $output .= " 
      <{$captiontag} class='wp-caption-text gallery-caption'> 
      " . wptexturize($attachment->post_excerpt) . " 
      </{$captiontag}>"; 
    } 
    $output .= "</{$itemtag}>"; 

} 

$output .= " 
    </div>\n"; 

return $output; 
} 

谁能帮助确保画廊缩略图,在各种规模,都显示无尺寸不管是什么他们链接到?

+0

尝试通过附加的东西在'remove_img_width_height'功能'$ html'调试它,看看它的工作原理。 –

+0

你能澄清吗?你在暗示什么? –

+0

您将preg_replace的结果保存在$ html中(这是在您的'function remove_img_width_height'中)。出于调试目的,您可以执行'$ html。 'test';'在第9行,在结束括号'}'之前,看看条件语句是否为真 –

回答

0

要做出响应画廊,你真的不需要从IMG删除所有的高度和重量标签。所有你需要做的是添加一些CSS给你的图像标签。

例如:

<div class="facebook"> 
    <img src="http:///" height="100" width="100" > 

为了使这个图像响应添加这个CSS

div.facebook img 
    { 
    width: 100%; 
    } 
+0

谢谢,但那不行。图像的宽高比不尽相同。它们必须受到高度或宽度的限制 - 以较大者为准。 –