2012-07-12 49 views
0

我想要得到的縮略圖顯示,如果一個div類中存在,但它以意想不到的方式輸出代碼(如固定鏈接是在href之外)PHP和HTML的回聲混合 - synatx

我究竟做錯了什麼?

<?php 
if (has_post_thumbnail($post->ID)) { 
    $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); 
    echo '<div class="thumbnail"><a href="' . the_permalink() . '">' . $image[0] . '</a></div>'; 
} else { 
    echo ''; 
} 
?> 

結果

http://www.permalink.com/<div class="thumbnail"><a href="">http://www.mysite.com/wp_myblog/wp-content/uploads/2011/10/fretless-thumbnail1.jpg</a></div> 

也沒有,我沒有留下任何胡蘿蔔,括號,引號或任何其他代碼。這是複製和過去,它究竟是如何outputing

編輯:FIX

我不得不添加一些額外的HTML,因爲修復程序只吐出JPG網址SANS img標籤。此外,它沒有顯示正確的圖像 - 它顯示原始的JPG而不是縮略圖版本

<?php 
    if (has_post_thumbnail($post->ID)) { 
     $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); 
     echo '<div class="thumbnail"><a href="' . get_permalink() . '">' . '<img src="' . $image[0] . '"></a></div>'; 
    } 
?> 

YAY!

+3

有什麼結果的HTML? – zerkms 2012-07-12 23:25:38

+0

服務器是否知道它是一個PHP文檔?編輯爲 – Rimian 2012-07-12 23:28:18

+0

以包含輸出。是的,這是一個有效的PHP文件。 – 2012-07-12 23:29:50

回答

3

the_permalink函數已包含echo聲明。

將其更改爲get_permalink,它應該正常工作:

<?php 
    if (has_post_thumbnail($post->ID)) { 
     $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); 
     echo '<div class="thumbnail"><a href="' . get_permalink() . '">' . $image[0] . '</a></div>'; 
    } 
?> 

你並不真正需要的else位,無論是。這可能是多餘的。

其實,對於一個稍微整潔的替代,這可能會正常工作(從我自己的代碼修改;剛剛添加的鏈接):

<?php if (has_post_thumbnail()) : ?> 
    <div class="hover_img"> 
     <a href="<?php the_permalink(); ?>"> 
      <?php the_post_thumbnail('thumbnail'); ?> 
     </a> 
    </div> 
<?php endif; ?> 
+0

啊!我知道這將是這樣簡單的事情。謝謝!但這會導致您可能能夠回答的另一個問題。它不會輸出正確的圖像。即使我將精選圖像設置爲縮略圖,頁面也會顯示完整大小的圖像。這是另一個備用電話問題嗎? – 2012-07-12 23:40:18

+0

nm,想通了 – 2012-07-12 23:51:25

+0

我已經添加了一個更清潔的解決方案@kristinachilds :) – dunc 2012-07-13 00:03:05