WordPres get_posts () НЕ возвращает теги шаблона - PullRequest
1 голос
/ 25 марта 2020

Я хочу получать последние 5 сообщений с помощью функции WordPress get_posts. Я сделал следующее:

В функциях. php файл Я добавил extra. php файл, который содержит следующий код:

if( !function_exists( 'evertstrap_post' ) ) {
function evertstrap_post() {

        $args  = array(
            'post_type' => 'post',
            'numberposts' => 5,
        );

        $recent_posts = get_posts( $args );

        foreach ( $recent_posts as $post ) {
            setup_postdata( $post );
            echo get_the_title();
            echo '<br/>';
        }
        wp_reset_postdata();

    }
}

Теперь из home. php файл, который я звоню evertstrap_post() НО он не получает последние 5 сообщений !!

НО

Если я непосредственно поместил код в index. php file, то он работает.

Как я могу решить его?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Я иногда видел это в WordPress, где вывод echo неблагоприятен. Не могли бы вы сделать это?

if( !function_exists( 'evertstrap_post' ) ) {
function evertstrap_post() {
        global $post;

        $args  = array(
            'post_type' => 'post',
            'numberposts' => 5,
        );

        $recent_posts = get_posts( $args );

        $output = '';

        foreach ( $recent_posts as $post ) {
            setup_postdata( $post );
            $output .= get_the_title();
            $output .= '<br/>';
        }
        wp_reset_postdata();

        return $output;
    }
}

Тогда в home.php вы могли бы сделать:

<?php echo evertstrap_post(); ?>
0 голосов
/ 25 марта 2020

Попробуйте это:

if( !function_exists( 'evertstrap_post' ) ) {
    function evertstrap_post() {

            $args  = array(
                'post_type' => 'post',
                'numberposts' => 5,
            );

            $recent_posts = get_posts( $args );

            foreach ( $recent_posts as $post ) {
                setup_postdata( $post );
                echo get_the_title($post->ID);
                echo '<br/>';
            }
            wp_reset_postdata();

        }
    }
  1. Вы видели только заголовок последнего сообщения 5 раз, потому что get_the_title () - это тег шаблона, используемый в слове "while post: do post" wordpress l oop. Однако та же функция принимает аргумент с идентификатором поста. подробнее здесь: https://developer.wordpress.org/reference/functions/get_the_title/
  2. Получая сообщения с помощью функции get_posts (), вы сохраняете объекты сообщений в массиве, и используя обычный foreach l oop, вы можете получать данные объекта, используя $post->key_name в это л oop. PHP: получение данных из объекта
  3. Также я рекомендую WordPress Codex. Это очень хорошо задокументировано.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...