2014-09-18 82 views
0

我有一个我正在写wordpress的短代码问题。我正在尝试使用get_the_content()函数,但不是拉取自定义帖子类型的内容,而是创建它,它将拉取简码所在页面的内容。其他功能都正常工作,例如get_the_title()和g et_the_post_thumbnail()。我在函数中传递了ID,它对于其他所有方面都非常有用,而不是get_the_contentget_the_content在短代码内不起作用

get_the_content($testimonial_item->ID); 

简码包含分页和其他所有工作正常的元素,它只是这一个导致我悲伤的功能。完整的代码如下,任何帮助将不胜感激。

function ncweb_display_testimonial_items($atts, $content = null) { 

extract(shortcode_atts(array(
    'per_page' => 6 
), $atts)); 

/* pagination parameters */ 

// check what page we are on 
if (isset ($_GET['testimonial-page'])) $page = $_GET['testimonial-page']; else $page = 1; 

// default number of pages 
$total_pages = 1; 

// portfolio offset. Used in the get_posts() query to show only portfolio for the current page 
$offset = $per_page * ($page-1); 

// setup the portfolio args for retrieving the total number of portfolio items 
$testimonial_count_args = array(
    'post_type' => 'ncweb-testimonials', 
    'posts_per_page' => -1 
); 
$testimonial_count = count(get_posts($testimonial_count_args)); 

// calculate the total number of pages 
$total_pages = ceil($testimonial_count/$per_page); 

/* end pagination parameters */ 

// main image query 
$testimonial_args = array(
    'post_type' => 'ncweb-testimonials', 
    'numberposts' => $per_page, 
    'offset' => $offset 
); 

$testimonial_items = get_posts($testimonial_args); 

// start our output buffer 
ob_start(); 

if($testimonial_items) : 

    /*** main portfolio loop ***/ 

     $counter = 1; 
     echo '<div class="testimonial-items" id="testimonial-items">'; 

     foreach($testimonial_items as $testimonial_item) : 

     $testimonial_company = get_post_meta($testimonial_item->ID, 'ncweb_testimonial_company', true); 
     $testimonial_client = get_post_meta($testimonial_item->ID, 'ncweb_testimonial_client_name', true); 

     echo '<aside class="testimonial-list-item row">'; 
     echo '<div class="col-xs-12 testimonial-list-item-info">'; 
     echo '<div class="testimonial-image">'. get_the_post_thumbnail($testimonial_item->ID) .'</div>'; 
     echo '<div class="testimonial-client"><span class="testimonial-client-name">'. $testimonial_client .'</span><br/><span class="testimonial-company">'. $testimonial_company .'</span></div>'; 
     echo '</div>'; //end of testimonial-list-item-info 
     echo '<div class="col-xs-12 testimonial-item-content">'. get_the_content($testimonial_item->ID); .'</div>'; 
     echo '</aside>'; 

     $counter++; 

     endforeach; 
     echo '</div>'; 

     /*** display pagination ***/ 

     // pagination base 
     echo '<div id="testimonial-pagination">'; 

      $base = get_permalink(get_the_ID()) . '%_%'; 

      echo paginate_links(array(
       'base' => $base, 
       'format' => '?testimonial-page=%#%', 
       'prev_text' => __('Previous', 'ncweb'), 
       'next_text' => __('Next', 'ncweb'), 
       'total' => $total_pages, 
       'current' => $page, 
       'end_size' => 1, 
       'mid_size' => 5 
      )); 

     echo '</div>'; 

    /*** end pagination display ***/ 


else : 
    echo '<p>' . __('No testimonial items found.', 'ncweb') . '</p>'; 
endif; // end if($images) 

return ob_get_clean(); 

} 
add_shortcode('testimonial-items', 'ncweb_display_testimonial_items'); 

回答

0

这是因为get_the_content()功能的包装,它的唯一参数是Read More文字和stripteaser说法。

你真正想要的是。

$post= get_post($testimonial_item->ID); 
$testimonial_items = $post->content ; 
$testimonial_items = apply_filters('the_content', $content); 

然后,你会有你在找什么。

0

在内容中使用短码时,您可以尝试使用此代码以获得完美的输出。

<?php 
 
    ob_start(); 
 
    the_content(); 
 
    $content_output = ob_get_clean(); 
 
    echo $content_output; 
 
?>