WordPress как на ладони
wordpress jino

get_post_format() WP 3.1

Возвращает формат поста (quote, status, video, audio).

Этот тег принято использовать внутри Цикла WordPress.

✈ 1 раз = 0.с = скорость света | 50000 раз = 2.73с = быстро

Хуков нет.

Возвращает

Строку - формат поста или false.

Список базовых форматов постов в WP:

  • aside
  • chat
  • gallery
  • link
  • image
  • quote
  • status
  • video
  • audio

Функция вернет false, если у поста не указан никакой формат, т.е. если это обычный пост. В некоторых случаях, вам может пригодится установить обычному посту формат standard, сделать это можно так:

$format = get_post_format();
if ( false === $format )
	$format = 'standard';

Использование

$format = get_post_format( $post_id );
$post_id(число)
ID поста, формат которого нужно получить.
По умолчанию: текущий пост в цикле

Примеры

#1. Пример, который показывает как выводить разный контент для записей с различными форматами

Убедитесь, что в теме существует файл для формата по умолчанию: format.php и файлы для остальных форматов соответственно: format-link.php, format-aside.php и т.д.

Этот код нужно использовать внутри цикла WordPress:

$format = get_post_format();
get_template_part( 'format', $format );

Код get post format: wp-includes/post-formats.php WP 4.8.2

<?php
function get_post_format( $post = null ) {
	if ( ! $post = get_post( $post ) )
		return false;

	if ( ! post_type_supports( $post->post_type, 'post-formats' ) )
		return false;

	$_format = get_the_terms( $post->ID, 'post_format' );

	if ( empty( $_format ) )
		return false;

	$format = reset( $_format );

	return str_replace('post-format-', '', $format->slug );
}

Cвязанные функции

Из метки: post format (форматы записей)

get_post_format 3 комментария
  • Егор

    Подскажите, как фильтровать посты по формату. Есть ли какой-то параметр в get_posts, с помощью которого можно на странице архива выводить только "заметки", например.

    Ответить2 года назад #
    • campusboy1847 cайт: wp-plus.ru

      Судя по коду этой функции, навряд ли. Но она работает на основе этой функции

      function get_post_format( $post = null ) {
        if ( ! $post = get_post( $post ) )
      					return false;
      
      		if ( ! post_type_supports( $post->post_type, 'post-formats' ) )
      				return false;
      
      		$_format = get_the_terms( $post->ID, 'post_format' );
      
      		if ( empty( $_format ) )
      				return false;
      
      		$format = reset( $_format );
      
      			return str_replace('post-format-', '', $format->slug );
      }

      Отсюда следует, что Вашу задумку можно сделать через функцию get_the_terms + get_posts.

      Но лучше попробовать в get_posts установить параметр, который используется в wp_query для вывода постов из нужных таксономий. По ссылке есть примеры, как выводить записи с определенным форматом. Данные параметры можно применять и к get_posts 1 к 1, как в и в wp_query.

      Ответить2 года назад #
      • Егор

        Спасибо.

        На форуме wp нашел более простое решение.

        Необходимо при выборке отфильтровать посты с ненужными типами записей -

        <?php
        $args = array(
          'tax_query' => array(
        	array(
        	  'taxonomy' => 'post_format',
        	  'field' => 'slug',
        	  'terms' => 'post-format-XYZ',
        	  'operator' => 'NOT IN'
        	)
          )
        );
        query_posts( $args );
        ?>
        Ответить2 года назад #

Здравствуйте, !

Ваш комментарий