Статьи

Что нужно знать авторам о форматах записей в WordPress 3.6

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

Последующие изменения в методах и программном обеспечении

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


Что касается последних основных выпусков WordPress, 3.3 внесла некоторые существенные улучшения в общий интерфейс администратора, 3.4 представила настройщик тем, а 3.5 включила новый способ управления мультимедиа для пользователей. Если вы — автор с темами, которые в настоящее время существуют, вы, вероятно, были довольно довольны этими последними несколькими основными выпусками, и вам не пришлось делать много с точки зрения обновлений или поддержки клиентов. Тем не менее, это может быть не так с WordPress 3.6.

Большое внимание в 3.6 уделяется форматам записей . Почтовые форматы были введены еще в 3.1, но до сих пор всегда сопровождались непостоянством. Каждый человек по-разному относится к форматам записей, и они, кажется, более или менее популярны в разных кругах сообщества WordPress и с разными типами тем.

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

Будучи автором темы WordPress, вы захотите понять новый пользовательский интерфейс форматов записей, который потенциально может быть представлен конечному пользователю, как это соответствует новой концепции структурированных форматов записей и всей новой функциональности темы 3.6. для почтовых форматов.

Надеемся, что эта статья побудит вас взглянуть на бета-версию WordPress 3.6 , начать работать с пост-форматами и начать работу с вашими темами до того, как они попадут в массы.


Первое, что заметят конечные пользователи WordPress при обновлении до WordPress 3.6, и то, что повлияет на вас как автора темы, — это совершенно новый пользовательский интерфейс форматов записей.

В этом дизайне пользовательского интерфейса для форматов постов уже произошли некоторые изменения на стадии бета-тестирования, но вот где команда WordPress в настоящее время находится, когда конечный пользователь добавляет новое сообщение, благодаря небольшому вдохновению от дизайна от Sara Cannon в переосмыслении WordPress Post Формат интерфейса .

Пользовательский интерфейс Post Format

Кроме того, WordPress также включил тонкое графическое улучшение при управлении всеми публикациями, добавив значок, представляющий текущий формат рядом с каждым заголовком сообщения.

Пользовательский интерфейс Post Format
Примечание. На момент написания этой статьи WordPress 3.6 все еще находился в стадии бета-тестирования, и в настоящее время пользовательский интерфейс форматов сообщений включен по умолчанию независимо от того, добавляет ли автор поддержку тем для форматов сообщений или нет. В то время как некоторые из ключевых людей вокруг выпуска, кажется, очень непреклонны в сохранении этого, было некоторое обсуждение того, должно ли это иметь место. (Билет Trac # 23930 )

Новая концепция структурированных почтовых форматов заключается в том, что WordPress теперь устанавливает стандартизированные структурированные данные, которые можно использовать при отображении определенных элементов, связанных с сообщениями разных форматов.

Новый пользовательский интерфейс форматов сообщений — это не просто более красивый способ выбора формата каждого сообщения. В некоторых форматах пользователям теперь предоставляются поля для сбора этих структурированных данных, которые будут связаны с записями. Например, при выборе формата «Видео» пользователю предоставляется поле для ввода видео.

Пользовательский интерфейс структурированных данных

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

Форматы записей, которые теперь имеют структурированные данные, связанные с ними, включают следующее:

  • Образ
    Пользователь имеет возможность назначить URL-адрес изображения и может добавить URL-адрес веб-сайта, если он хочет, чтобы это изображение где-то ссылалось.
  • Ссылка на сайт
    Пользователь получает одно поле для вставки URL-адреса для ссылки.
  • видео
    Пользователь может вставить URL-адрес или встроить код для видео (видео с самостоятельным размещением теперь поддерживается в версии 3.6).
  • аудио
    Пользователь может вставить URL-адрес или встроить код для аудиофайла (самодостаточный звук теперь поддерживается в 3.6).
  • котировка
    У пользователя есть поле для источника цитаты и URL веб-сайта для этого источника. Обратите внимание, что фактическая цитата взята из содержания поста; это займет первое <blockquote> или весь контент, если его не существует.

Хотя мы все еще находимся в бета-версии, и все вышеперечисленное пока не набрало обороты, многое здесь сделано в конечном итоге ради стандартизации.

Когда все будет готово, независимо от результата, всегда будет место для дебатов. Например, формат «Ссылка» имеет поле для URL ссылки, но должно ли оно также иметь поле для текста, связанного с этой ссылкой? Функциональность по умолчанию здесь заключается в том, что заголовок сообщения служит текстом для ссылки. Это правильно или неправильно? У каждого будет свое мнение об этих вещах, и вы, несомненно, можете начать дебаты со всеми структурированными данными в формате записи.

Стандартизация сопровождается такими смелыми решениями, и мы должны принять их, чтобы благо сообщества WordPress двигалось вперед. Нам нужно работать с новыми стандартами и делать все возможное, чтобы предоставить пользователям более унифицированный опыт администрирования.


Для тех, кто специально не добавляет поддержку структурированных форматов post_formats_compat() в своих темах, WordPress 3.6 включает новую post_formats_compat() . Эта новая функция автоматически фильтруется в the_content() . Это работает рука об руку с новой концепцией структурированных почтовых форматов для вывода стандартного поведения для этих структурированных данных.

Например, в теме, в которой специально не добавлена ​​поддержка « structured-post-formats » для постов «Изображение», когда тема выводит the_content() с постом этого формата, WordPress автоматически фильтрует отображение изображения пользователь выбран.

Что интересного в этом, и что является причиной некоторых запутанных обсуждений, так это то, что это означает фактически добавить поддержку тем для « structured-post-formats » для определенного формата. Когда вы делаете это, вы не говорите, что ваша тема поддерживает данные, введенные пользователем, но вместо этого вы фактически говорите, что не хотите, чтобы данные автоматически фильтровались в the_content() для заданного формата записи.

Другими словами, когда вы добавляете поддержку structured-post-formats для определенного формата поста с помощью add_theme_support() , вы отключаете post_formats_compat() когда ваша тема выводит the_content() . Это касается форматов — изображения, ссылки, видео, аудио и цитаты — которые все запрашивают у пользователя структурированные данные.

Эта идея немного сбивает с толку, потому что до сих пор использование add_theme_support() всегда означало добавление поддержки некоторой функции, которую WordPress не поддерживает по умолчанию, такой как миниатюры записей, пользовательские фоны и т. Д. Однако структурированные данные форматов записей теперь функция по умолчанию в WordPress. Итак, использование add_theme_support() в этом случае больше о том, как вы подходите к обработке этих структурированных данных в файлах вашей темы.

Не волнуйтесь, если это еще не совсем щелчок. Мы обсудим это далее с конкретными примерами кода в следующем разделе, и это будет иметь больше смысла с некоторыми из новых функциональных возможностей темы, которые вы можете использовать.


С новым пользовательским интерфейсом форматов записей и структурированными данными WordPress 3.6 представляет довольно много новой функциональности, которую вы можете начать использовать в своих темах.

Независимо от того, включен ли в финальной версии WordPress 3.6 пользовательский интерфейс форматов записей по умолчанию, вы все равно захотите зарегистрировать, что ваша тема поддерживает форматы записей из файла функций темы, как вы делали это раньше, для непрерывности. Однако теперь разница заключается в том, что вы также хотите указать, какие форматы поддерживают structured-post-formats .

1
2
3
4
5
6
add_theme_support( ‘structured-post-formats’, array(
    ‘link’, ‘video’
) );
add_theme_support( ‘post-formats’, array(
    ‘aside’, ‘audio’, ‘chat’, ‘gallery’, ‘image’, ‘quote’, ‘status’
) );

Обратите внимание, что в приведенном выше примере, поскольку форматы « link » и « video » имеют поддержку « structured-post-formats », их не нужно добавлять в общую поддержку « post-formats », поскольку это происходит автоматически.

Форматы, к которым имеет смысл добавить поддержку « structured-post-formats », потенциально могут включать в себя те, которые собирают данные от пользователя — изображения, ссылки, видео, аудио или цитаты.

Какой ощутимый эффект дает добавление поддержки тем для структурированных форматов записей? — По сути, это означает, что при любых вызовах the_content() для поддерживаемых форматов не будет post_formats_compat() новый post_formats_compat() 3.6, который мы обсуждали в предыдущем разделе.

В каждой теме WordPress, которую вы когда-либо создавали, вы использовали the_content() для отображения содержания сообщения, верно? Ну, в WordPress 3.6 есть новая функция the_remaining_content() которую можно использовать вместо этого, если хотите.

1
2
3
<div class=»entry-content»>
    <?php the_remaining_content();
</div>

По сути, это просто выводит содержание сообщения без структурированных данных формата сообщения.

Например, предположим, вы настраиваете, как пост в формате «Изображение» отображается в вашей теме. Использование the_remaining_content() приведет к выводу содержимого сообщения, что позволит вам отобразить соответствующее изображение из структурированных данных формата сообщения в разметке вашей темы где-то еще. Обратите внимание, что в этом случае вам не нужно будет добавлять поддержку structured-post-formats для формата «Изображение», поскольку вы не используете the_content() .

С точки зрения отображения структурированных данных, WordPress 3.6 предоставляет несколько очень простых в использовании функций, которые охватывают все это. В файлах вашей темы они позволяют отображать структурированные данные отдельно от контента, если это то, что вы хотите сделать в дизайне вашей темы.

1
<?php the_post_format_image();
1
<?php the_post_format_link();
1
<?php the_post_format_video();
1
<?php the_post_format_audio();
1
<?php the_post_format_quote();

Практический пример использования одного из них может выглядеть примерно так для формата поста «Изображение»:

1
2
3
4
5
6
<div class=»entry-media»>
    <?php the_post_format_image();
</div>
<div class=»entry-content»>
    <?php the_remaining_content();
</div>

И снова, чтобы повторить, с этим примером отображения поста «Изображение» и использования the_remaining_content() вам не нужно будет добавлять поддержку темы « structured-post-formats », потому что вы не используете the_content() .

Однако, если бы вы делали следующее с помощью функции the_content() , вам нужно было бы добавить поддержку « structured-post-formats the_content() » для формата «Изображение», иначе вы бы в итоге получили изображение, отображаемое дважды.

1
2
3
4
5
6
<div class=»entry-media»>
    <?php the_post_format_image();
</div>
<div class=»entry-content»>
    <?php the_content();
</div>

Если вы не используете функции, которые мы обсуждали до сих пор, и вы просто полагаетесь на использование the_content() для отображения всех структурированных данных в формате записи, есть одна вещь, которую вы заметите, или может и не найти странного. За исключением формата «Ссылка», WordPress имеет post_formats_compat() для отображения всех структурированных данных после содержимого публикации.

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

1
2
3
4
5
function my_post_format_compat_args( $args ) {
    $args[‘position’] = ‘before’;
    return $args;
}
add_filter( ‘post_format_compat’, ‘my_post_format_compat_args’ );

Если вы хотите сделать что-то нестандартное с этими структурированными данными, они просто сохраняются как мета в сообщениях, которые вы можете легко получить с помощью get_post_meta() , как всегда.

1
2
3
4
5
6
7
8
9
<?php
$foo = get_post_meta( get_the_ID(), ‘_format_quote_source_name’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_quote_source_url’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_link_url’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_audio_embed’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_video_embed’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_image’, true );
$foo = get_post_meta( get_the_ID(), ‘_format_url’, true );
?>

А чтобы получить один массив всех метаданных формата поста для данного поста, вы можете использовать новую get_post_format_meta() чтобы получить все это за один снимок.

1
<?php $format_meta = get_post_format_meta( get_the_ID() );

Я знаю, что когда впервые появились форматы сообщений, формат «Чат» всегда был тем, с которым я действительно не знал, как обращаться. Как пользователь вводит чат в содержание сообщения? Как мы это показываем? С новой the_post_format_chat() теперь появился более четкий стандарт.

Ожидается, что пользователь собирается поместить чат в содержание сообщения, отформатированного примерно так:

1
2
3
John: foo
Mary: bar
John: foo 2

Пользователь также может указать дату и время. Обратите внимание, что это будет выглядеть так, как если бы пользователь скопировал и вставил прямо из разговора в Skype, что является идеей для крутых, новых парсеров чата.

1
2
3
[4/10/13 4:20:30 PM] John: foo
[4/10/13 4:20:58 PM] Mary: bar
[4/10/13 4:22:22 PM] John: foo 2

И затем в вашей теме, где вы отображаете формат сообщения «Чат», вы можете просто заменить the_content() на the_post_format_chat() примерно так:

1
2
3
<div class=»entry-content»>
    <?php the_post_format_chat();
</div>

Это автоматически преобразует запись чата пользователя в некую стандартизированную семантическую разметку, которую мы все можем начать стилизовать под наши темы. Единственная реальная выгода с этим состоит в том, что предполагается, что контент содержит только чат и ничего больше до или после. Тем не менее, я полагаю, что это было довольно распространенным явлением для большинства авторов тем в том, как они раньше обрабатывали формат поста «Чат».

Также, если вы хотите получить необработанные проанализированные данные из стенограммы чата поста, вы можете использовать функцию get_the_post_format_chat() . Это вернет массив данных стенограммы чата, которые вы могли бы затем обработать с помощью собственной HTML-разметки.

1
2
3
4
5
6
7
8
9
function my_chat_display() {
    $stanzas = get_the_post_format_chat();
    foreach( $stanzas as $stanza ) {
        foreach( $stanza as $row ) {
            // …
        }
    }
    // …
}

И, наконец, что если вы просто хотите скрыть новый пользовательский интерфейс форматов записей? Ну, конечно, WordPress дает вам фильтр для этого.

1
add_filter( ‘enable_post_format_ui’, ‘__return_false’ );
Примечание. Этот фильтр добавлен в версии 3.6-beta2 (Trac ticket # 23929 ).

Но я думаю, вопрос в том, стоит ли тебе это делать? Я бы сказал, что в большинстве случаев это, вероятно, не лучшая вещь. Поскольку пользовательский интерфейс почтовых форматов теперь может оказаться частью WordPress по умолчанию, вы по существу просто удалите его от конечного пользователя.

Если вы создали совершенно другую пользовательскую систему для сбора данных для использования с форматами записей и скрыли пользовательский интерфейс по умолчанию, это может немного запутать конечного пользователя со стандартизацией в долгосрочной перспективе. Это плохо или хорошо? Я не знаю; это просто о чем подумать. — По иронии судьбы, я думаю, что те, кто ранее включал форматы сообщений в свои темы, больше всего будут иметь дело с обновлениями для релиза 3.6, в отличие от тех, кто еще их не беспокоил.

Если выясняется, что WordPress 3.6 официально имеет пользовательский интерфейс форматов записей, видимый по умолчанию, и вы скрываете пользовательский интерфейс только потому, что не обращаетесь к нему в своей теме, то я могу понять, как некоторые могут воспринимать это как ленивый ,

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

Реально, это, вероятно, кусок пирога с новой функцией совместимости форматов записей. Есть большая вероятность, что ваша тема не в формате пост уже работает с новыми структурированными данными. Как минимум, вы можете просто убедиться, что такие вещи, как стенограммы чата и формат цитаты, хорошо отображаются в терминах CSS вашей темы.

А для тех, кто хочет проявить творческий подход к отображению постов различных форматов в своих темах, у вас теперь есть масса удивительных новых функций тем, с которыми можно поиграть.