• 20.06.15
  • 09:05
  • 730
  • 0

Автор: Pippin Williamson.
Оригинал: Using the WordPress Heartbeat API.

Замечание: перевод вольный, некоторые высказывания заменены на более понятные (на мой взгляд), и добавлены примечания. Все примечания опираются на WP 4.2.2.

— Г.К.

В WordPress 3.6 был введён новый API, называемый «WordPress Heartbeat». На нём основано множество сделанных в этой версии изменений, включая более развитую систему отслеживания ревизий, улучшенное управление пользовательскими сессиями и многое другое. Я собираюсь показать краткий пример использования этого API.

  • 07.06.15
  • 09:52
  • 1062
  • 0

Эти функции похожи:

  • get_the_terms возвращает информацию о термах заданной таксономии, привязанных к заданному посту;
  • wp_get_object_terms возвращает информацию о термах одной или нескольких таксономий, привязанных к одному или нескольким постам, а также имеет ряд дополнительных опций.

Кроме этого каждая из них обладает другими особенностями, о которых надо знать.

  • 04.06.15
  • 15:13
  • 468
  • 0

Большинство параметров термов хранится в БД — они всегда присутствуют в объекте терма. Некоторые параметры добавляются функциями и в БД отсутствуют (на момент WordPress 4.2.2 таких параметров два — filter и object_id).

  • 03.06.15
  • 19:05
  • 1819
  • 2

В БД хранятся только термы и их метаданные. Информация о таксономиях находится на стороне PHP-кода.

Каждый терм имеет идентификатор, ярлык, имя и группу, а также связан со своей таксономией. Эта связь — «терм-таксономия» — обладает собственным идентификатором и привязывается к постам в качестве терма. К ней же относится его описание. Сам терм непосредственной связи с постами не имеет.

  • 13.05.15
  • 23:30
  • 497
  • 0

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

Задача: составить списки виджетов и типов виджетов. При этом

  1. список всех зарегистрированных виджетов требуется в виде хеша $id_base => $name;
  2. список всех размещённых на сайдбарах виджетов должен быть сгруппирован по сайдбарам:
    Текст пунктов списка имеет вид "{$name} ({$title})", пустой заголовок не приводится; значения пунктов — идентификаторы виджетов.
  • 12.05.15
  • 21:44
  • 775
  • 0
Правый сайдбар

Правый сайдбар

Задача: сайдбары темы должны поддерживать несколько вариантов оформления виджетов (см. рис.) Соответствие вариантов виджетам задано в виде двухуровневого хеша:

id сайдбара => id_base типа виджета => вариант оформления.

Т. е. режим отображения виджета следует получать так:

Все режимы являются частью шаблонов (содержат фрагменты вёрстки) и не имеют настраиваемых параметров. Поэтому они заданы в виде массива $AVAILABLE_MODES прямо в коде темы.

Массив соответствия вариантов виджетам $a_widget_modes является настраиваемым и каким-либо образом задаётся администратором.

Решение задачи сводится к коррекции передаваемых виджету параметров сайдбара before_widget, after_widget, before_title и after_title.

Корректировка проводится фильтром 'dynamic_sidebar_params'. Фильтруемым значением является числовой массив, содержащий два элемента:

  • [0] — параметры сайдбара, идентификатор и имя виджета;
  • [1] — хеш с номером виджета.
  • 11.05.15
  • 16:17
  • 879
  • 0

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

Размещаются виджеты в отведённых для этого областях страницы — сайдбарах, называемых также боковыми панелями. Сайдбары принадлежат теме. Размещение на них виджетов происходит на экране «Внешний вид > Виджеты» (/wp-admin/widgets.php).

  • 11.05.15
  • 15:47
  • 1886
  • 0

Ситуация: имеется готовая вёрстка, виджеты в которой выполнены не совсем стандартно для WordPress: их содержимое заключено в блок, следующий за блоком заголовка. В общих чертах это выглядит так:

Вёрстка такова, что перенос div.widget-title в div.widget-body невозможен. Отсутствие любого из них дизайн также не предусматривает.

Проблема: когда заголовок пуст, обрамляющий его код обычно не выдаётся, и параметры сайдбара before_widget и after_widget оказываются несбалансированными — первый открывает один блок, второй закрывает два:

Задача: заставить виджеты с пустыми заголовками отображаться корректно.