RavenPo
@RavenPo

Как вставить цикл WP в шорткод?

Всем доброго дня. Пытаюсь создать шорткод внутри которого будет прописан цикл, чтобы выводить его в любом месте.
Вот цикл с разметкой:

<div class="container">
<div class="row">
<?php
global $post;

$args = array( 'posts_per_page' => 5, 'orderby' => 'rand', 'category' => 5 );
/* постов на страницу - 5, сортировка - в случайном порядке */

$rand_posts = get_posts( $args );
foreach ( $rand_posts as $post ) :
  setup_postdata( $post ); ?>

			<div class="col-md-4 col-sm-6">
				<div class="card">
					<a href="<?php the_permalink(); ?>"><div class="ground"></div><div class="zoom"></div><?php the_post_thumbnail();?></a>
				</div>
			</div>

<?php endforeach;
wp_reset_postdata(); ?>
</div>
</div>


Пытаюсь вставить этот цикл внутрь шорткода, но я, по-видимому, делаю что-то неправильно.
Вот пример того как я пробовал:

// Регистрируем функцию
function meha() {
//Возвращаем функцию
return '

<div class="container">
<div class="row">
<?php
global $post;

$args = array( 'posts_per_page' => 5, 'orderby' => 'rand', 'category' => 5 );
/* постов на страницу - 5, сортировка - в случайном порядке */

$rand_posts = get_posts( $args );
foreach ( $rand_posts as $post ) :
  setup_postdata( $post ); ?>

			<div class="col-md-4 col-sm-6">
				<div class="card">
					<a href="<?php the_permalink(); ?>"><div class="ground"></div><div class="zoom"></div><?php the_post_thumbnail();?></a>
				</div>
			</div>

<?php endforeach;
wp_reset_postdata(); ?>
</div>
</div>


';
}
//Регистрируем шорткод
add_shortcode( 'mehaman', 'meha' );


К сожалению ничего не получилось. Пробовал еще несколько вариантов, но и они не сработали. В общем, буду благодарен за любую помощь. Спасибо.
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 1
Palladi_N
@Palladi_N
Web dev
ob_start();

// сюда вставляешь весь код html и php с циклами или.... только не забывай открывать и закрывать <?php ?>

$myreturn = ob_get_clean();
return $myreturn;
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы