Как отображать последние сообщения по названию категории в WordPress с помощью шорткода

Я хочу показать последние сообщения по названию категории, используя шорткод, например:

[recent-posts posts="10" category="thecategoryname"]

Мой код ниже отображает последние сообщения, но я не знаю, как отображать их по категориям в шорткоде в формате выше.

function recent_posts_function($atts){
    extract(shortcode_atts(array(
        'posts' => 1,
    ), $atts));

    $return_string = '<ul>';
    query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts));
    if ( have_posts() ) :
        while ( have_posts() ) : the_post();
            $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
        endwhile;
    endif;
    $return_string .= '</ul>';

    wp_reset_query();
    return $return_string;
}

function register_shortcodes(){
    add_shortcode('recent-posts', 'recent_posts_function');
}

add_action( 'init', 'register_shortcodes');

1 ответ

Решение

Пример для ваших атрибутов шорткода:

// Attributes
extract( shortcode_atts(
    array(
        'category' => 'thecategoryname',
        'posts' => '10',
    ), $atts )
);

Кроме того, вам нужно добавить category_name к вашему запросу и количество сообщений на странице.

Пример (из вашего кода выше - модифицированный):

   query_posts(
     array(
     'orderby' => 'date', 
     'order' => 'DESC' , 
     'posts_per_page' => $posts,
     'category_name' => $category
     )
    );
Другие вопросы по тегам