Использование wp_get_recent_posts - PullRequest
0 голосов
/ 15 июня 2011

Я пишу свою собственную тему, и на боковой панели я хочу перечислить детали трех сообщений с определенным тегом («признакам»). Сначала я попробовал это:

$args = array(
    'posts_per_page' => 3,
    'tag' => 'featured'); 

$recent_posts = wp_get_recent_posts($args);
foreach( $recent_posts as $post ){
    ...
}

Но это не сработало, вместо этого я получил только одно сообщение, в котором не было тега (самое последнее сообщение в данном случае).

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

В идеале я бы хотел продолжать использовать wp_get_recent_posts, так как он намного проще и определенно подходит для работы. В результате я хотел бы оставить этот вопрос конкретным, почему я не могу использовать эту функцию должным образом, а не альтернативные решения, использующие get_posts или более прямые запросы.

Ответы [ 5 ]

2 голосов
/ 12 сентября 2011

У меня была такая же проблема, хотя я не пытался ограничить по тегу.Вот как я это исправил.Глядя на фактическую сигнатуру функции для wp_get_recent_posts (которая находится в /wp-includes/post.php), по крайней мере, в моей версии Wordpress, видно:

function wp_get_recent_posts($num = 10)

Это, конечно, другоеиз того, что говорит Кодекс Wordpress.Но когда я вызвал функцию с wp_get_recent_posts(5), я фактически получил 5 самых последних сообщений.

Так что не похоже, что то, что вы хотели сделать, возможно с этой функцией.

1 голос
/ 10 августа 2014

В WP 3.9.2 у меня есть эта рабочая функция:

function posts_by_tag($tag, $numberposts = 0) {

    $args = array( 'numberposts' => $numberposts, 'post_status' => 'publish', 'tag' => $tag );
    $recent_posts = wp_get_recent_posts( $args );

    foreach( $recent_posts as $recent ){
            $posts = $posts . '<a href="' . get_permalink($recent["ID"]) . '">'
                    . $recent["post_title"]
                    . get_the_post_thumbnail($recent["ID"], "full")
                    . '</a>';
    }
    return $posts;

}

1 голос
/ 15 июня 2011

Может быть нелегко, так как ссылка на функцию не показывает никаких параметров тега: http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

Может потребоваться дальнейший выбор с помощью is_tag: http://codex.wordpress.org/Function_Reference/is_tag

0 голосов
/ 27 августа 2014

Да!Вы можете использовать параметр tag с тегом slug в атрибутах, передаваемых wp_get_recent_posts(), для фильтрации по этому тегу.Это кажется совершенно недокументированным.Пример:

$args = array('tag' => 'my-tag-slug');
$recent_posts = wp_get_recent_posts($args);
0 голосов
/ 16 июня 2011

Хорошо, поскольку ответа, похоже, нет, я написал решение с использованием get_posts, которое работает точно так же.Я до сих пор не знаю, что я делал неправильно с wp_get_recent_posts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...