Задать вопрос
@ligisayan

Как просуммировать строки в шорткоде wordpress?

Всем привет! Хочу написать шорткод в которому будут выводиться последние 5 записей таксономии. Вся загвощдка в том, что я не знаю как просуммировать строки в этом месте:
$cont += "<li><a href='". $post->guid. "'>" . $post->post_title . "</a></li><br />";

т.к. по хорошему атрибуты $post должны выводиться через echo и если я подставляю в выражение выше - получаю ошибку.

Код:
function shortcode_function() {

	$args = array(
	'numberposts' => 5,
	'category'    => 0,
	'orderby'     => 'date',
	'order'       => 'DESC',
	'meta_key'    => '',
	'meta_value'  =>'',
	'post_type'   => 'movies',
	'suppress_filters' => true,
);

$posts = get_posts( $args );
$cont = 0;

foreach( $posts as $post ){ 
setup_postdata($post);

   $cont += "<li><a href='". $post->guid. "'>" . $post->post_title . "</a></li><br />";
}

	return $cont;

}
add_shortcode( 'show_films', 'shortcode_function' );
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@ligisayan Автор вопроса
Моя задача решается с помощью буферизации вывода ob_start() - ob_get_clean()
function shortcode_function() {
ob_start();
	$args = array(
	'numberposts' => 5,
	'category'    => 0,
	'orderby'     => 'date',
	'order'       => 'DESC',
	'meta_key'    => '',
	'meta_value'  =>'',
	'post_type'   => 'movies',
	'suppress_filters' => true,
);

$posts = get_posts( $args );
$cont = 0;

foreach( $posts as $post ){ 
setup_postdata($post); 
 ?>
<li><a href="<?php echo $post->guid; ?>"><?php echo $post->post_title; ?></a></li>

<?php }
$cont = ob_get_clean();
	return $cont;

}
add_shortcode( 'show_films', 'shortcode_function' );
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
wayheming
@wayheming
$cont += ''; в PHP строки нужно конкатенировать через . то есть $cont .= '';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы