get_the_content не работает в шорткоде

У меня проблема с шорткодом, который я пишу для WordPress. Я пытаюсь использовать get_the_content() функция, но вместо того, чтобы извлекать содержимое пользовательского типа записи, который я создал, он вытягивает содержимое страницы, на которой сидит шорткод. Все остальные функции работают нормально, например get_the_title() и гet_the_post_thumbnail(), Я передаю идентификатор в функции, и он отлично работает для всего остального, только не get_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' );

2

Решение

Это потому что get_the_content() Функция является оберткой, и это только аргументы Read More текст и stripteaser аргумент.

То, что вы на самом деле хотите, так это.

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

Тогда у вас будет то, что вы ищете.

2

Другие решения

Вы можете попробовать этот код, чтобы получить идеальный вывод при использовании шорткода в контенте.

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

Самый простой способ вывести the_content с помощью шорткода:

function my_sc_content() {
ob_start();
$my_content = the_content();
echo $my_content;
$output_string = ob_get_contents();
ob_end_clean();
return $output_string;
}

add_shortcode('my-content','my_sc_content');
1
По вопросам рекламы [email protected]