2013-10-20 73 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

謝謝,但那不行。圖像的寬高比不盡相同。它們必須受到高度或寬度的限制 - 以較大者爲準。 –