Можно ли использовать get_posts()?

Ссылка скопирована
1 ответ

Здравствуйте, подскажите, пожалуйста, можно ли здесь и как использовать метод get_posts() для вывода постов? или что-то еще?

Дополнительно:

НЕ НАДО ставить тег РНР, если у вас вопрос по вордпресс

Ответы:

Да, можете создать метод get_posts() для вывода постов. Или что-то еще.

  • Как? не получается, тогда как подтягивать данные с бд
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Да, get_posts() можно использовать для вывода записей. Это нормальная WordPress-функция, которая внутри использует WP_Query, но возвращает простой массив постов. Она удобна, когда нужно вывести небольшой список записей без полноценной пагинации.

<?php
$posts = get_posts( [
    'post_type'      => 'post',
    'posts_per_page' => 5,
    'orderby'        => 'date',
    'order'          => 'DESC',
] );
 
if ( $posts ) :
    foreach ( $posts as $post ) :
        setup_postdata( $post );
        ?>
        <article>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php the_excerpt(); ?>
        </article>
        <?php
    endforeach;
    wp_reset_postdata();
endif;
?>

<?php $posts = get_posts( [ 'post_type' => 'post', 'posts_per_page' => 5, 'orderby' => 'date', 'order' => 'DESC', ] ); if ( $posts ) : foreach ( $posts as $post ) : setup_postdata( $post ); ?> <article> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> </article> <?php endforeach; wp_reset_postdata(); endif; ?>

Если нужно получить данные «из базы», не пишите прямой SQL без необходимости. Для записей, страниц, custom post type, категорий и мета-полей в WordPress уже есть API: get_posts(), WP_Query, get_terms(), get_post_meta(), get_field() для ACF.

Пример для custom post type:

$items = get_posts( [
    'post_type'      => 'services',
    'posts_per_page' => 10,
    'post_status'    => 'publish',
] );

$items = get_posts( [ 'post_type' => 'services', 'posts_per_page' => 10, 'post_status' => 'publish', ] );

Когда лучше использовать WP_Query:

  • нужна пагинация;
  • нужно менять главный запрос;
  • нужны сложные условия и контроль над циклом;
  • важно получить found_posts и другие параметры запроса.

Когда подходит get_posts(): блок «похожие записи», список последних новостей, вывод нескольких элементов на главной, служебная выборка внутри шаблона. Главное — после setup_postdata() не забывайте wp_reset_postdata().

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно