Наша цель

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

Пример вывода записей с миниатюрами в WordPress

Пример вывода записей с миниатюрами в WordPress

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

Алгоритм решения задачи

Все довольно просто — достать картинку из содержимого записи и отобразить ее возле выдержки из этой же записи. Реализовать «доставание» картинки можно разными способами: парсить контент записи на наличие изображения, доставать картинку из блока «Миниатюра записи» (но перед этим придется еще и добавлять ее к каждой записи), наконец доставать ее из «Дополнительных полей», но опять-таки ее туда еще нужно и добавлять, что не совсем удобно. Возьмемся за самый простой вариант — парсинг контента.

<code>...</code>,Wordpress

WordPress функция register_sidebar() очень часто используется на практике при создании шаблонов WordPress. В рубрике <code>…</code> я собираю именно такие функции, которые часто использую. Собственно для того, чтобы они всегда были под рукой я их туда и добавляю.

Пример регистрации сайдбара

  1. Пишем функцию вызывающую регистрацию сайдбара. В ней передаем параметры виджетов, которые будут в этом сайдбаре
  2. Добавляем вызов этой функции в момент инициализации (возникновения) виджетов Wordress
  3. Здесь приведен пример отображения содержимого созанного нами сайдбара. Вызов этой функции нужно поместить в место, где вы хотите отображать ваш сайдбар
// 1
function stepasyuk_widgets_init() {
    register_sidebar(array(
        'name' => 'Stepasyuk sidebar',
        'id' => 'stepasyuk-sidebar',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => "</div>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    ));
}
// 2
add_action('widgets_init', 'stepasyuk_widgets_init');

// 3
if (function_exists('dynamic_sidebar'))
    dynamic_sidebar('stepasyuk-sidebar');

<code>...</code>,Wordpress