• Всем привет)

    Задача — нужно выводить модуль с произвольным типом записей на любой странице.

    Решение — сделать шоркод с передаваемыми параметрами и передавать в него количество записей, название типов записей и таксономий.

    Проблема — не получается с помощью функции get_template_part() вывести шаблон миниатюр записи.

    Код, который работает, но который не устраивает отсутствием гибкости:

    function lp_post_external( $atts ) {
    
    	$last_posts = get_posts(array('showposts'=>50,'post_type'=>'lp_course','type'=>'general-course'));
    	$out = '<ul>';
    	foreach( $last_posts  as $post ){
    		$out .= '<li><a href="'. get_permalink( $post->ID ) .'">'. $post->post_title .'</a></li>';
    	}
    	$out .= '</ul>';
    	return $out;
    }	
    
    add_shortcode( 'lp_post', 'lp_post_external' );

    Код, который не работает:

    function lp_post_external( $atts ) {
    
    	$last_posts = get_posts(array('showposts'=>50,'post_type'=>'lp_course','type'=>'general-course'));
    
    	foreach( $last_posts  as $post ){
    		get_template_part('parts/courses-item');
    	}
    
    }	
    
    add_shortcode( 'lp_post', 'lp_post_external' );

    Вопрос — как совместить get_template_part и get_post в одном шоркоде?

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Попробуйте так (с глобальной переменной $post и буферизацией вывода):

    function lp_post_external( $atts ) {
    	global $post;
    
    	$latest_posts = get_posts( array(
    		'showposts' => 50,
    		'post_type' => 'lp_course',
    		'type'      => 'general-course',
    	) );
    
    	$output = '';
    
    	foreach ( $latest_posts as $post ) {
    		ob_start();
    		get_template_part( 'parts/courses-item' );
    		$output .= ob_get_clean();
    	}
    
    	wp_reset_postdata();
    
    	return $output;
    }
    add_shortcode( 'lp_post', 'lp_post_external' );

    Про буферизацию читал — не смог самостоятельно применить решение, а про глобальную переменную просто забыл)

    Спасибо — все работает)

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Использование get_template_part и get_post в шоркоде» закрыта для новых ответов.