WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Вывод постов в виджете используя get_posts

Хотел в сайдбаре в виджетах вывести Дату, Имя поста, И кнопка далее в линке чтобы переходить на страницу поста. Все работает, но проблема в том что выводит один и тот же пост 10 раз(это количество постов). Как сделать чтобы выводились разные посты под своими параметрами(дата, имя поста, линк поста)?

add_shortcode( 'test_example', 'test_example_func' );

function test_example_func() {
		$str = "";
		$posts = get_posts( array(
			'numberposts' => 10,
			'orderby'     => 'date',
			'order'       => 'DESC',
			'post_type'   => 'post'
		) );

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

			$dt = get_the_date();
			$title = get_the_title();
			$link = get_the_permalink();
			$str .= "<div>
								<div>$dt</div>
								<div><strong>$title</strong></div>
								<div><em><a href=\"$link\">Далее...</a></em></div>
							</div><br>";

		}
		wp_reset_postdata(); // сброс
		return $str;
	}   
0
Баха
5.5 лет назад
  • 0
    Glomberg139 viktor-web.ru

    Здравствуйте.
    global $post; надо добавить.
    PS я дак вообще не люблю setup_postdata()

    add_shortcode( 'test_example', 'test_example_func' );
    
    function test_example_func() {
    
    		global $post;
    		$str = "";
    
    		$posts = get_posts( array(
    			'numberposts' => 10,
    			'orderby'     => 'date',
    			'order'       => 'DESC',
    			'post_type'   => 'post'
    		) );
    
    		foreach( $posts as $post ){ 
    			setup_postdata($post);
    
    			$dt = get_the_date();
    			$title = get_the_title();
    			$link = get_the_permalink();
    			$str .= "<div>
    								<div>$dt</div>
    								<div><strong>$title</strong></div>
    								<div><em><a href=\"$link\">Далее...</a></em></div>
    							</div><br>";
    
    		}
    		wp_reset_postdata(); // сброс
    		return $str;
    	}   
    Баха 5.5 лет назад

    Спасибо, реально помог!!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация