saltcod
  • 0
Новичок

Отображение/запрос форматов сообщений

  • 0

В WP 3.1 все взволнованы, хотя и несколько сбиты с толку форматами постов.

Включение новых форматов сообщений

Вопрос включения форматов сообщений был подробно рассмотрен. Это так же просто, как добавить эту строку в functions.php:add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

Отображение постов определенного формата

А вот вопрос с отображением этих постов практически не освещался. Задокументируем процесс отображения/запроса постов определенного формата на примере:

Допустим, мы хотим разместить на боковой панели обновление статуса в стиле Twitter. Включить формат сообщения легко status, но как на самом деле запросить эти сообщения, чтобы они отображались на боковой панели?

Я проделал немало поисков и не нашел ответа на эту проблему, все могут внести свой вклад. Если мы придумаем хороший ответ, я думаю, он будет первым, кто задокументирует этот вопрос.

С благодарностью!

Share
  1. У вас есть много вариантов отображения с помощью функции «Форматы сообщений»:

    например, в цикле index.php вы можете решить, что показывать на основе формата сообщения, используя функцию has_post_format() :

            if ( has_post_format( 'aside' )) {
                echo the_content();
            }
    
            elseif ( has_post_format( 'chat' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    
            elseif ( has_post_format( 'gallery' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    
            elseif ( has_post_format( 'image' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_post_thumbnail('medium');
                echo the_content();
            }
    
            elseif ( has_post_format( 'link' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    
            elseif ( has_post_format( 'quote' )) {
                echo the_content();
            }
    
            elseif ( has_post_format( 'status' )) {
                echo the_content();
            }
    
            elseif ( has_post_format( 'video' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    
            elseif ( has_post_format( 'audio' )) {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    
            else {
                echo '<h3>';
                echo the_title();
                echo '</h3>';
                echo the_content();
            }
    

    Использование get_template_part() и get_post_format() для получения цикла defferent на основе формата. Предполагается, что вы создали файл формата loop.php (скажем, format-status.php) для каждого формата, используемого в вашей теме, поэтому вы просто вызываете Это :

    get_template_part( 'format', get_post_format() );
    

    И вы также можете запрашивать сообщения на основе их формата:

    $args = array(
                    'tax_query' => array(
                        array(
                            'taxonomy' => 'post-format',
                            'field' => 'slug',
                            'terms' => array( 'post-format-quote' )
                        )
                    )
                )
                $query = new WP_Query( $args );
    

    и последнее (на данный момент) вы можете использовать «post_class();» функция для стиля на основе CSS

    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    

    это выведет что-то вроде:

    <div id="post-id" class=”post format-status”>
    

    Надеюсь, это поможет начать

    • 0
  2. Вы можете использовать has_post_format или get_post_format. У Лизы Сабин-Уилсон есть хорошая статья с их использованием под названием WordPress 3.1 Post Formats Reference.

    has_post_format пример:<?php if ( has_post_format( 'video' )) { echo 'this is the video format'; } ?>

    get_post_format пример:<?php $format = get_post_format( $post_id ); ?>

    • 0
  3. Хотя все описанные выше методы будут работать, есть гораздо более чистый способ сделать это, как показано Дугалом Кэмпбеллом.

    while ( the_loop() ):
        get_template_part( 'format', get_post_format() );
    endwhile;
    

    Использование этого метода убьет условные операторы и означает, что вам не нужно добавлять больше, если вы добавите поддержку другого формата сообщений. Все, что вам нужно сделать, это добавить файл шаблона.

    • 0
  4. Просто чтобы добавить краткое обновление, если вы хотите запрашивать только «стандартный» формат сообщения (то есть по умолчанию), вы должны запрашивать все сообщения НЕ в других форматах сообщений. Это связано с тем, что WordPress хранит «false», а не «post-format-standard» для стандартных сообщений.

    Немного раздражает, но это единственный способ, которым я смог это сделать.

    Вот ‘tax_query’, который я использовал только для возврата стандартных сообщений:

    'tax_query' => array(
        array(
            'taxonomy' => 'post_format',
            'field' => 'slug',
            'terms' => array('post-format-aside', 'post-format-gallery', 'post-format-link', 'post-format-image', 'post-format-quote', 'post-format-status', 'post-format-audio', 'post-format-chat', 'post-format-video'),
            'operator' => 'NOT IN'
        )
    )
    

    Также обратите внимание, что название таксономии «post_format», а не «post-format», как было написано выше. Я попытался исправить приведенный выше пример, но не смог изменить один символ.

    • 0

Оставить ответ

You must login to add an answer.