2015-04-25 55 views
1

我在我的wordpress主題,單篇文章頁面(顯示單篇文章的頁面)中有以下代碼。WordPress的 - 在內容中定位圖像

<article id="post-<?php the_ID(); ?>"<?php post_class('col-md-12'); ?>> 
<div class="container"> 

    <header class="entry-header"> 
     <h1 class="entry-title"><?php the_title(); ?></h1> 
    </header> 

    <?php 
     $thumb = get_post_thumbnail_id(); 
     $img_url = wp_get_attachment_url($thumb,'full'); //get full URL to image (use "large" or "medium" if the images too big) 
     $image = aq_resize($img_url, 1200, 720, true); //resize & crop the image 
    ?> 

    <?php if($image) : ?> 
    <img class="img-responsive singlepic" src="<?php echo $image ?>"/> 
    <?php endif; ?> 

    <?php if ($post->post_type == 'data-design' && $post->post_status == 'publish') { 

if ($attachments) { 
    foreach ($attachments as $attachment) { 
     $class = "post-attachment mime-" . sanitize_title($attachment->post_mime_type); 
     $thumbimg = wp_get_attachment_link($attachment->ID, 'thumbnail-size', true); 
     echo '<li class="' . $class . ' data-design-thumbnail">' . $thumbimg . '</li>'; 
    } 
} 
} 
?> 

<div class="entry-content"> 

    <?php the_content(); ?> 

    <?php 
     wp_link_pages(array(
      'before' => '<div class="page-links">' . __('Pages:', 'web2feel'), 
      'after' => '</div>', 
     )); 
    ?> 
</div><!-- .entry-content --> 

</div> 
</article><!-- #post-## --> 

它把後標題,然後特色圖像作爲一個大圖像,然後發佈的內容,然後剩下的。

我想定位內容中的圖像,並以與顯示特色圖像相同的方式顯示它們。 *注意 - 修改'if($ attachments){...'函數不會改變任何東西(也不會完全刪除它),所以我不確定那個部分是幹什麼的。影響內容的唯一代碼是當它被調用時('')

+0

你可以在不使用php的情況下使用它,在編輯器中只需將相同的css類設置爲帖子中圖像的特色圖像。或者你可以將這些CSS類的CSS屬性複製到'.entry-content img'中。 –

+0

PHP代碼$ php if($ image)設置圖像大小/裁剪等等,所以不需要php參與跟特色圖像相同的類?你的方式工作,但質量非常低(其在後php中帶來的小(即使它的一個大圖像),並增加100%的寬度只是在低質量 – user3550879

+0

規模它想出了它!混合你所說的和一對夫婦代碼的變化修復它,謝謝你的幫助 – user3550879

回答

0

有時候我以前用過下面的代碼去除我內容區域中的所有圖像,然後單獨顯示它們與內容分開。這可能會幫助你。

在你functions.php文件 -

function stripe_images_from_content($content){ 

$images = array(); 
$subject = $content; 

$subject = preg_replace('~<img [^\>]*\ />~', '', $subject); 
$subject = preg_replace('~\[caption[^\]]*\][^\]]*\]~', '', $subject); 

$image_urls = array(); 

$match_count = preg_match_all('/<img.*src=["\']([^"\']*)["\'].*\/>/', $content, $image_urls); 

if (is_numeric($match_count) && $match_count > 0) { 

    if(is_array($image_urls[1]) and count($image_urls[1]) > 0){ 

     foreach($image_urls[1] as $i){ 

      $featured_image_url = $i;    
      $image_id = get_attachment_id_from_src($featured_image_url); 

      if (! is_numeric($image_id)) { 

       $match_count = preg_match('/(.*)-\d+x\d+(\.(jpg|png|gif))/', $featured_image_url, $matches); 

       if (is_numeric($match_count) && $match_count > 0) { 
        $base_image_url = $matches[1] . $matches[2]; 

        $images[] = get_attachment_id_from_src($base_image_url); 
       } 
      } 
      else{ 
       $images[] = $image_id; 
      } 

     } 

    }  

} 

$data = new stdClass(); 

$data->images = $images; 
$data->content = $subject; 

return $data; 

}

這個函數的作用是什麼讓插入後的內容區域中的所有圖像,並剝奪他們。然後返回圖像和沒有圖像的內容。

single.php文件 -

$content = stripe_images_from_content(get_the_content()); 

現在你需要做兩件事情。 $content->images包含在帖子內容區域中插入的所有圖像。並且$content->content保留了原始內容圖像被剝離。 首先你需要要顯示您的圖片使用$content->images明智和第二echo wpautop($content->content);

希望這可以幫助你更換the_content()功能。

+0

有趣的方法。我設法得到它爲我的需求工作,但這絕對是一個策略,我將保持在我的後面口袋裏的另一個項目。謝謝! – user3550879

+0

我的快樂:)。 – maksbd19