2015-01-17 3 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()은 루프의 현재 게시물에서 작동합니다. 따라서 ID를 전달할 필요가 없습니다.

+0

OP가 '$ post'를 어디서나 정의했는지 어떻게 알 수 있습니까?! – Rizier123

+1

코드는 WordPress에만 적용됩니다. '$ post'는 이미 전역 적으로 정의 된 것이지 사용자가 스스로해야하는 것이 아닙니다. –

+0

안녕하세요, Nathan Dawson, 대단히 감사합니다. –