2015-01-17 54 views
-3
function portfolio_shortcode($atts, $content = null){ 
    extract(shortcode_atts(array(
     'type' => 'post', 
    ), $atts)); 

    $q = new WP_Query(
     array('posts_per_page' => 5, 'post_type' => 'portfolio') 
     );    

    $list = '<div class="row"> 
       <section id="projects"> 
        <ul id="thumbs" class="portfolio">'; 
    while($q->have_posts()) : $q->the_post(); 
     $idd = get_the_ID(); 

     $portfolio_large = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'portfolio-large'); 
     $portfolio_thumb = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'portfolio-image'); 

     $list .= ' 

        <!-- Item Project and Filter Name --> 
       <li class="col-lg-3 design" data-id="id-0" data-type="web"> 
       <div class="item-thumbs"> 
       <!-- Fancybox - Gallery Enabled - Title - Full Image --> 
       <a class="hover-wrap fancybox" data-fancybox-group="gallery" title="'.get_the_title().'" href="'.$portfolio_large[0].'"> 
       <span class="overlay-img"></span> 
       <span class="overlay-img-thumb font-icon-plus"></span> 
       </a> 
       <img src="'.$portfolio_thumb[0].'" alt="'.get_the_title().'" /> 

       </div> 
       </li> 

     '; 

    endwhile; 
    $list.= '</ul></section></div>'; 
    wp_reset_query(); 
    return $list; 
} 
add_shortcode('portfolio', 'portfolio_shortcode'); 
+0

'$ post-> ID' - >'$ idd-> ID'? – Rizier123

+0

最後一行真的是48行嗎?你試過什麼了? – belwood

+0

問題的特徵是問題被擠壓進標題中,並且在問題主體中沒有其他解釋性信息,往往會被封閉。 – halfer

回答

4

在嘗試使用之前,它。引起問題的線路有:

$portfolio_large = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'portfolio-large'); 
$portfolio_thumb = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'portfolio-image'); 

有兩種解決方案,以這種特殊的錯誤。

1)

添加global $post;到您的函數的頂部。例如。

function portfolio_shortcode($atts, $content = null) { 
    global $post; 
    ... 

2)

您已經與$idd = get_the_ID();獲取ID。用它代替$post->ID。例如。

$portfolio_large = wp_get_attachment_image_src(get_post_thumbnail_id($idd), 'portfolio-large'); 
$portfolio_thumb = wp_get_attachment_image_src(get_post_thumbnail_id($idd), 'portfolio-image'); 

還有第三種替代方案,我最後提到它,因爲如果將來遇到類似問題,它不會對您有所幫助。 get_post_thumbnail_id()將在循環中的當前帖子上工作。因此,您不需要傳入任何身份證件。

+0

您如何知道OP甚至在任何地方定義了'$ post'? – Rizier123

+1

該代碼是特定於WordPress的。 '$ post'已經被全局定義,而不是用戶需要自己做的事情。 –

+0

嗨Nathan Dawson,非常感謝。 –

相關問題