@ivan30002000

Передать шорткод из functions php в html?

Подскажите, пожалуйста, как передать шорткод хлебных крошек в динамически создаваемый блок, гугл не помог решить проблему..
У меня есть блок main__items в нем выводятся посты из определенной категории, в каждом посте есть шорткод breadcrumbs:
<div class="main__items">
    <?php 
        $my_posts = get_posts( array(
            'numberposts' => 4,
            'category_name'    => 'test',
            'orderby'     => 'date',
            'order'       => 'DESC',
            'post_type'   => 'post',
            'suppress_filters' => true,
        ) );

        foreach( $my_posts as $post ){
            setup_postdata( $post );
            ?> 
            <div class="main__item">
                <?php echo do_shortcode("[breadcrumb]"); ?>
                <a href="<?php echo get_permalink(); ?>" class="main__img">
                    <?php the_post_thumbnail(); ?>
                </a>
            </div>
            <?php
        }
        wp_reset_postdata();
    ?>
</div>

Также на этой странице есть кнопка "loadmore", которая подгружает посты при нажатии, эти посты создаются в functions.php:
<?php 
	add_action('wp_ajax_more_blog_ajax', 'more_blog_ajax');
	add_action('wp_ajax_nopriv_more_blog_ajax', 'more_blog_ajax');
	function more_blog_ajax() {
		$page = (isset($_POST['page'])) ? $_POST['page'] : 1;

		header("Content-Type: text/html");

		$params = array(
			'category_name' 	=> 'test',
			'post_status' 		=> array('publish'),
			'orderby'     		=> 'date',
			'order'       		=> 'DESC',
			'post_type'   		=> 'post',
			'suppress_filters'	=> true,
			'posts_per_page' 	=> 2,
			'paged'          	=> $page
		);

		$loop = new WP_Query($params);

		$items = array();

		if ($loop -> have_posts()) :  while ($loop -> have_posts()) : $loop -> the_post();
		$out = '';
        $out .= '<div class="main__item"><a href="'. get_permalink() .'" class="main__img">'. get_the_post_thumbnail() .'</a></div>';
		$items[] = $out;
		
		endwhile;
		endif;
		wp_reset_postdata();
		echo json_encode(array('count' => get_category(get_the_category(get_the_ID())[0]->term_id)->category_count, 'items' => $items));
		wp_die();
	}
?>

Суть вопроса: Как подставить шорткод в эту функцию, чтобы в вновь созданный пост добавлялись хлебные крошки?
На всякий случай, js функция которая принимает данные в шаблоне:
var page = 2;
    
    function load_more() {
        page++;
        $.ajax({
            url: ajax_params.url,
            method: 'post',
            dataType: 'json',
            data: {action: 'more_blog_ajax', page: page},
            success: function(data) {
                var items = data.items.join("");
                document.querySelector('.main__items').insertAdjacentHTML('beforeEnd', items);
                if(data.count - page * 0 <= 0) {
                    document.querySelector(".btn_loadmore").style.display = "none";
                }
            }
        });
        
        return false;
    }
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
$out = '';
$out .= '<div class="main__item">';
	$out .= do_shortcode( '[breadcrumb]' );
	$out .= '<a href="' . get_permalink() . '" class="main__img">';
		$out .= get_the_post_thumbnail();
	$out .= '</a>';
$out .= '</div>';
$items[] = $out;
Ответ написан
Ваш ответ на вопрос

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

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