как динамически использовать пользовательский тип записи

Я создал новую страницу шаблона, и я показываю пользовательский тип сообщения на этой странице следующим образом:

                   <div class="col-sm-4">
                    <?php $i = 1 ?>
                    <?php $posts = get_posts(array(
                        'post_type' => 'astroalbums',
                        'posts_per_page' => -1
                        ));
                        foreach ($posts as $post) : start_wp(); ?>
                    <?php if ($i == 1): ?>
                    <?php $link = get_permalink($post->ID); ?>
                    <?php the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' );?>
                    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
                    <?php endif; ?>
                    <?php if($i == 3){$i = 1;} else {$i++;} ?>
                    <?php endforeach; ?>

Мой пользовательский тип сообщений — «астроальбомы», и я хочу использовать его динамически. У меня есть 4 пользовательских типа сообщений. Я хочу создать новую страницу на панели инструментов и назначить созданный выше шаблон страницы. и каждая страница будет вызывать разные пользовательские типы сообщений. Это будет действительно большая помощь. Спасибо, Трупти.


person Trupti    schedule 05.01.2017    source источник


Ответы (1)


Вы правильно получаете сообщения, но кажется, что проблема внутри цикла foreach. Поскольку цикл WordPress по умолчанию не используется, вам необходимо вызывать функции, которые получают идентификатор сообщения в качестве параметра или используют свойства, присутствующие в объекте $post (который является экземпляром класса WP_POST), чтобы отобразить данные.

Одно из возможных решений:

<?php
    $posts = get_posts([
        'post_type' => 'astroalbums',
        'posts_per_page' => 1
    ]);
?>

<?php foreach( $posts as $post ): ?>
    <?php $link = get_permalink( $post->ID ); ?>

    <h3 class="entry-title">
        <a href="<?php echo esc_url( $link ); ?>" rel="bookmark">
            <?php echo get_the_title( $post->ID ); ?>
        </a>
    </h3>
    <a href="<?php echo esc_url( $link ); ?>">
        <?php echo get_the_post_thumbnail( $post->ID ); ?>
    </a>
<?php endforeach; ?>
person Leonardo Rocha    schedule 11.01.2017