Код вывода записей в архиве
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'book',
'posts_per_page' => 10,
'paged' => $page,
);
query_posts($args);
while ( have_posts() ) : the_post(); ?>
<?php $format = get_post_format();?>
<?php if ( ! get_post_format()) : ?>
<?php get_template_part( 'content-book', 'none' ); ?>
<?php else : ?>
<?php get_template_part( 'content-book', get_post_format() ); ?>
<?php endif ?>
<?php endwhile;?>
<?php echo $format; ?>
<nav class="navigation pagination postnavigation" role="navigation"><div class="postnav nav-links"><?php echo paginate_links(); ?></div></nav>
<?php //wp_reset_query(); ?>
А разве стандартный не text?
‘post_format’ => ‘post-format-text’
К сожалению, нет. Но я на всякий случай проверил этот вариант.
Попробуйте отобразить формат. После
<?php $format = get_post_format();?>
добавьте
<?php echo $format; ?>
Возможно в массиве аргументов нужно указывать не post-format-text а просто text
Уже проверял этот вариант (<?php echo $format; ?> есть в коде выше))) Выводится только aside, к сожалению.
есть в коде выше)))
Внутрь цикла echo поместите
У вас выводится формат ПОСЛЕДНЕГО поста
Проверил не выводится. На всякий случай убрал все записи, кроме стандарта — тоже ничего не выводится.
Кодекс говорит, что пост может не иметь формата, но не может иметь формат «стандарт» или «текст».
+ вот еще цитата (правда уже не из кодекса)
The terms have the slug post-format-{$format} where $format can be one of:
aside, chat, gallery, link, image, quote, status, video, audio
where standard is not included.
Я тут подумал, если post_format — это таксономия, то нам просто надо убрать категории aside и остальные из выборки по этой категории. Только обычно это делается через id категорий, которых у нас нет и надо сделать как то через slug.
Ну так тогда условием if ( ! get_post_format()) и ограничивайте вывод записей
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'book',
'posts_per_page' => 10,
'paged' => $page,
);
query_posts($args);
while ( have_posts() ) : the_post();
$format = get_post_format();
if ( !get_post_format()){
get_template_part( 'content-book', 'none' );
}
endwhile;
?>
<nav class="navigation pagination postnavigation" role="navigation"><div class="postnav nav-links"><?php echo paginate_links(); ?></div></nav>
<?php wp_reset_query(); ?>
if ( ! get_post_format()) уже тоже есть в коде, но она подбирает шаблон для вывода записей (если есть content-book-aside.php, например), а не фильтрует их. Отфильтровать у меня не получилось
Я тут подумал, если post_format — это таксономия, то нам просто надо убрать категории aside и остальные из выборки по этой категории. Только обычно это делается через id категорий, которых у нас нет и надо сделать как то через slug.
Что-то Вы глубоко копаете 🙂
Я же условие правильно понял?
Необходимо выводить только записи стандартного формата и не выводить видео, заметки и прочее.
Код выше будет именно это и делать
if ( ! get_post_format()) уже тоже есть в коде, но она подбирает шаблон для вывода записей (если есть content-book-aside.php, например), а не фильтрует их.
Я код читать умею 🙂
В данный момент у вас код:
Если формат не указан отображать без шаблона
Иначе — подобрать шаблон и отобразить
Ваша задача убрать из кода «иначе».
🙂
КОД ВЫШЕ БУДЕТ РАБОТАТЬ 🙂
ПРичем переменную $format можно/нужно убрать
while ( have_posts() ) : the_post();
if ( !get_post_format()){
get_template_part( 'content-book', 'none' );
}
endwhile;
Большое спасибо за разъяснения кода, но приведенный пример, к сожалению не работает. Пробовал его ставить и полностью, и заменяя часть кода начиная с if — все равно ни один пост не выводится.
Upd: переменную убрал
Код, приведенный Вами в первом посте работает? Отображает все посты?
Да, конечно. Этот код используется на разных страницах архивов и везде работает.