Новий реліз движка WordPress пропонує нові можливості для розробників, які займаються проектуванням та написанням тем оформлення. У новому релізі зроблений наголос на форматування постів. Зокрема, додано новий інтерфейс користувача для користувачів WordPress, а також нові структурні елементи та підходи до форматування та відображення даних у рамках обраної теми. У цій статті йтиметься про те, як можна застосувати нові формати для постів у новій версії WordPress 3.6.
замість передмови
Якщо брати хронологію нових версій WordPress, у версії 3.3 були зроблені суттєві покращення у загальному інтерфейсі адміністрування; у версії 3.4 було запропоновано "настроювач" теми оформлення; а версія 3.5 надала нові інструменти для роботи користувачів із медіа-контентом. Якщо ви вже раніше розробляли теми для цих версій движка, то ви напевно освоїлися з новими "фішками" і не багато робили для переходу на наступну версію движка. У випадку з WordPress 3.6 все буде трохи інакше.
У версії 3.6 був зроблений наголос форматах постів. Вперше формати постів з'явилися у версії 3.1, але до поточної версії особливих змін не було. Форматування постів та різні формати були популярні у невеликій частині спільноти розробників, і найчастіше застосовувалися з різними видами та підвидами тем. Тепер змінився підхід до структурування інформації та тому, яку роль різний контент та різні формати постів відіграють у загальному оформленні сайту.
Як автор тем для WordPress, вам варто вивчити нові елементи інтерфейсу користувача і те, як надати структуровану інформацію у вигляді різних постів так, щоб вона була зрозуміла і приємна кінцевому користувачеві. Така функціональність існує для версії 3.6.
Сподіваюся, новинки стануть для вас стимулом для завантаження та встановлення WordPress 3.6 beta, роботи з новими форматами публікацій та розробки нових тем до того, як це стане мейнстримом.
Формати постів та їх UI
Перше, що помітять користувачі нової версії WordPress - це абсолютно нові формати для постів та пов'язаний з ними UI. Дизайн інтерфейсу для вибраних форматів постів вже зазнав певних змін на стадії бета-версії.
До того ж у WordPress також впровадили графічні покращення в управлінні постами та відображенні іконки з поточним форматом посту поруч із кожним заголовком для посту.
Примітка: На момент написання цієї статті двигун версії WordPress 3.6 все ще був у "беті", і тому відображався новий інтерфейс для форматування постів незалежно від того, є в авторській темі підтримка кастомних форматів чи ні її. Такий стан справ призвів до налаштування певних доповнень та широкої дискусії серед розробників (див. повідомлення на підтримку движка за номером) # 23930).
Структуровані формати для постів
Новий концепт дозволяє структурувати та стандартизувати дані в постах та відображати певні вкладення та пункти, пов'язані з цими конкретними форматами. У новому інтерфейсі роботи з форматами ви можете вибирати дані на основі полів з пропонованими типами даних. Наприклад, вибираючи "Відео" як постовий формат, ви побачите поле для вставки відео.
На даний момент формати постів із структурованими даними включають наступні типи:
- Зображення — є опція для вказівки адреси зображення та прив'язки до зображення певної веб-адреси, яка веде посилання з картинки на конкретний сайт.
- Посилання - Порожнє поле для введення посилання на сайт.
- Відео — можна додати адресу відео-ролика або вбудувати код відео (тепер є підтримка навіть локального хостингу відео-файлів).
- Аудіо — можна додати код вставки або абсолютну адресу для аудіофайлу (включаючи збережені на своєму хостингу).
- Цитата — можна додати цитати та посилання з неї на сайт-першоджерело. Сама цитата береться як частина контенту у пості, і при цьому враховується перший тегблок-котирування> та обрамлений ним вміст.
Цілком можливо, що після цих перших кроків стандартизації подальший список постів і пов'язаних з ними форматів і контенту з посиланнями на сторонні ресурси буде розширено. Поки що точаться суперечки про те, наскільки такі нові формати та пов'язані з ними типи контенту та полів виправдані; однак важливим є той факт, що спільнота розробників WordPress не стоїть на місці і рухається до нових рішень (у тому числі - і в інтерфейсі користувача).
Сумісність форматів для постів
Для тих розробників, які не додадуть підтримки кастомних форматів для постів, у новій версії движка запропонована функція post_formats_compat(). Вона налаштована автоматично для фільтрації вмісту the_content (). З її допомогою ви зможете структурувати свої дані та відображати контент у потрібному вам форматі.
Наприклад, якщо у вас не задана підтримка параметра "structured-post-formats" для постів категорії "Зображення", то при виведенні даних через the_content () WordPress автоматично фільтрує відображуваний контент за вибраним користувачем зображення. Також для конкретного типу форматів реалізовано підтримку на рівні теми параметра "structured-post-formats". Коли ви вмикаєте підтримку параметра "structured-post-formatsдля конкретного типу постів з add_theme_support(), ви вимикаєте параметр post_formats_compat() для виведення контенту в рамках the_content ().
Щодо зручності такої "фішки" ще точаться суперечки, тому що досі використання add_theme_support() завжди означало підтримку певної "фічі", якої в движку за замовчуванням немає. А тепер структурування постів за форматами – це параметр роботи WordPress із коробки. Так що реалізовувати цей параметр вручну чи ні справа ваша.
Нова функціональність теми оформлення
З новим інтерфейсом для роботи з постами, форматами та структурованими даними WordPress 3.6 також надає нові можливості в плані функціональності для тем оформлення, що використовуються.
Додаємо підтримку для структурованих форматів у постах
Включити підтримку для структурування форматів можна навіть сьогодні, але різниця в тому, як ви хочете вказати конкретні пости і формати для них в рамках "structured-post-formats".
add_theme_support( 'structured-post-formats', array( 'link', 'video' ) ); add_theme_support( 'post-formats', array( 'aside', 'audio', 'chat', 'gallery', 'image', 'quote', 'status' ) );
Зауважте, що оскільки для форматів "link"І"відео" у наведеному вище прикладі включено підтримку параметра "structured-post-formats", для них немає необхідності включати підтримку"post-formats", тому що це відбувається в автоматичному режимі. Кастомно включати"structured-post-formatsє сенс для тих постів і форматів, які збирають ті чи інші дані користувача, картинки, фотографії, відео, посилання, аудіо-файли, цитати і т.д.
Новий спосіб для відображення вмісту посту
У кожній створеній раніше темі оформлення WordPress ви використовували the_content () для відображення вмісту постів. Але в WordPress 3.6 з'явилася нова функція під назвою the_remaining_content(), і можна скористатися нею:
<div class="entry-content"> <?php the_remaining_content(); ?> </div>
Цей код виводить вміст поста без увімкнення структурованих форматованих даних у пості. Наприклад, ви налаштовуєте формат відображення типу постів "Малюнок." Використовуючи the_remaining_content() ви зможете виводити весь вміст посту, відображаючи пов'язані з ним картинки в розмітці теми десь ще, не тільки в пості. Не забудьте, що у разі такого використання вам не потрібно додавати підтримку.structured-post-formatsдля картинок, тому що ви не застосовуєте для цієї мети параметр the_content ().
Відображаємо дані з форматів для постів
Що стосується відображення структурованих даних WordPress 3.6 обзавівся деякими досить простими для використання функціями, які вирішують це завдання. У рамках файлів для вашої теми оформлення ви зможете відображати структуровані дані окремо від контенту, якщо це відповідає якимось вашим побажанням щодо оформлення:
<?php the_post_format_image(); ?> <?php the_post_format_link(); ?> <?php the_post_format_video(); ?> <?php the_post_format_audio(); ?> <?php the_post_format_quote(); ?>
Приклад використання наведеної вище "фішки" на практиці виглядає якось так (для формату "Картинка"):
<div class="entry-media"> <?php the_post_format_image(); ?> </div> <div class="entry-content"> <?php the_remaining_content(); ?> </div>
Вам знову-таки не потрібно включатиstructured-post-formats" для теми, тому що ви не використовуєте the_content (). Якщо наведену вище операцію ви хочете зробити із застосуванням the_content (), ви додаєте підтримку "structured-post-formats" для формату постів та вмісту "зображення", інакше в іншому випадку у вас двічі відобразиться одна і та ж картинка:
<div class="entry-media"> <?php the_post_format_image(); ?> </div> <div class="entry-content"> <?php the_content(); ?> </div>
Відображаємо структуровані дані у верхній частині the_content()
Якщо функції, згадані вище, ви не використовуєте, а просто покладаєтеся на можливості the_content () у плані відображення всіх форматів у структурованому вигляді, то, можливо, ви знайдете дивним наступну "фішку". За винятком формату "посилання", WordPress використовує налаштування post_formats_compat() для відображення всіх структурованих даних після вмісту посту. Якщо вам такий стан справ не подобається, можна використовувати спеціальний фільтр, для чого треба внести парочку правок у файлі. functions.php:
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 ():
<?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 ); // Image URL ?>
Щоб створити єдиний масив з усіх мета-даних посту, можна використовувати нову функцію get_post_format_meta():
<?php $format_meta = get_post_format_meta( get_the_ID() ); ?>
Відображаємо чат як пост
ФорматЧат- один з тих, який у багатьох розробників немає навіть думок куди "приткнути". Як відобразити вміст чату в пості? Як його взагалі використовувати? З новою функцією the_post_format_chat() ви можете відобразити вміст чату у форматованому вигляді, щоб вийшло щось на зразок цього:
John: foo Mary: bar John: foo 2
Також можна включати дату та час. Врахуйте, що непоганим варіантом може бути оформлення вставлених чатів у стилістиці Skype:
[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():
<div class="entry-content"> <?php the_post_format_chat(); ?> </div>
Так автоматично відбудеться конвертування чату користувача в стандартизований і розмічений контент з єдиним стилем для різних тем оформлення на сайті.
Якщо ви хочете отримати голі дані з розшифровки чату в пості, використовуйте функцію get_the_post_format_chat(). Вона перетворить масив з чатом на розшифровані дані, які потім можна оформити за своїм бажанням за допомогою HTML-розмітки:
function my_chat_display() { $stanzas = get_the_post_format_chat(); foreach( $stanzas as $stanza ) { foreach( $stanza as $row ) { // ... } } // ... }
Приховуємо елементи UI для форматів постів
І нарешті, якщо ви взагалі хочете приховати формати постів з інтерфейсу користувача? На цей випадок у вас є фільтр:
add_filter( 'enable_post_format_ui', '__return_false' );
Примітка: цей фільтр був доданий у версії 3.6-beta2 (див. тикет # 23929).
Питання тут тільки в тому, чи варто його застосовувати? У більшості випадків подібна фільтрація – не найкраще рішення; тому що у фінальному релізі движка інтерфейс може виявитися частиною загального інтерфейсу за умовчанням, так що ви "поламаєте" відображення загального інтерфейсу користувача внесенням різних правок на свій розсуд.
Чи добре експериментувати з елементами інтерфейсу користувача, я не знаю. Якщо виявиться, що за замовчуванням в WordPress 3.6 формати постів включені і видимі в інтерфейсі користувача, а ви їх приховали, то положення стане якоюсь плутаниною для адміністраторів і рядових користувачів, які будуть бачити / не бачити формати по-різному.
Висновок
Внесення всіх згаданих вище кастомізацій до нової версії двигуна безумовно свідчить про подальше зростання WordPress. Вам варто переконатися, що ваші теми "з коробки" підтримують більшість нових налаштувань та опцій, щоб забезпечити максимальну зручність у використанні та зворотну сумісність. Зокрема, можливо, вам доведеться "підкрутити" сумісність старих тем із новими форматами постів. Як мінімум, переконайтеся, що "фішки" на зразок чатів і цитат коректно відображаються в загальній таблиці стилів для вашої теми під новим движком. Ну і звичайно, тепер у вас з'явиться купа нових функцій та налаштувань, з якими можна "грати", створюючи нові теми оформлення та працюючи з контентом.
Коментарі до запису: 4
У мене формати постів не відображаються в адмінці. Як їх увімкнути?
не підкажіть що за помилка як її виправити Fatal error: Unknown: Cannot used
З таким особисто не стикався, може пошук помилково дасть результат?
а як увімкнути елементи UI?
тост у якому файлі потрібно зробити зміни чи може плагін який є?