Java, UX, HTML, CSS, WEB-design

Вставка виджетов с шорткодами

[ad_1]

  • Даниэль Патаки

  • 0 Комментарии

Вставка виджетов с шорткодами

  • 5 минут чтения

  • WordPress, Виджеты, Шорткоды, Методы (WP)

Краткое резюме ↬

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

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

Некоторые из виджетов, которые можно добавить с помощью шорткодов.
Некоторые из виджетов, которые можно добавить с помощью шорткодов.

Это руководство предназначено для опытных пользователей WordPress; мы рассмотрим объект виджетов и шорткоды, не вдаваясь в подробности о том, как и почему они работают. Если вам нужна дополнительная информация, я предлагаю прочитать статью Mastering WordPress Shortcodes and Widgets API в Кодексе.

Дальнейшее чтение на SmashingMag:

  • Шорткоды WordPress: полное руководство
  • Освоение шорткодов WordPress
  • Функции WordPress для упрощения ведения блога

Еще после прыжка! Продолжить чтение ниже ↓

Получение случайного виджета

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

Он принимает три параметра:

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

Как только я увидел это, мое лицо озарилось. Я могу не только вывести виджет в любом месте, но и передать различные аргументы боковой панели любому виджету. Это здорово, потому что я могу указать такие параметры, как before_widget и after_widget.

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

После применения CSS виджет календаря можно добавить куда угодно.
После применения CSS виджет календаря можно добавить куда угодно.

Буферизация вывода

При добавлении шорткода вы сканируете текст в поисках определенной строки, что-то делаете с ней и возвращаете результат, который хотите увидеть. Очевидно, что мы будем использовать the_widget(), но эта функция только повторяет содержимое. Чтобы обойти эту проблему, мы будем использовать буферизацию вывода.

Взгляните на следующие два примера; результат точно такой же.

the_widget( 'WP_Widget_Archives' );
ob_start();
the_widget( 'WP_Widget_Archives' );
$contents = ob_get_clean();
echo $contents;

Сначала мы запускаем наш буфер. С этого момента все, что отображается, попадает в наш буфер, а не воспроизводится на самом деле. Используя ob_get_clean(), мы можем вытащить содержимое буфера в переменную (а также очистить буфер). Как только это будет сделано, мы можем вывести эту переменную или передать ее, вернув ее, если мы находимся в функции.

Создание шорткода

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

  • Тип виджета — какой виджет мы хотим показать;
  • Заголовок — заголовок виджета (используется в параметре экземпляра);
  • Другие параметры экземпляра;
  • Другие аргументы боковой панели.

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

Для решения этой проблемы требуется гибкий шорткод и хорошая документация для конечного пользователя.

Лучший способ убедиться, что шорткод используется правильно, — предоставить хорошую документацию.
Лучший способ убедиться, что шорткод используется правильно, — предоставить хорошую документацию.

Скелет шорткода

add_shortcode( 'widget', 'my_widget_shortcode' );
function my_widget_shortcode( $atts ) {

// Configure defaults and extract the attributes into variables
extract( shortcode_atts(
    array(
        'type'  => ’,
        'title' => ’,
    ),
    $atts
));

$args = array(
    'before_widget' => '<div class="box widget">',
    'after_widget'  => '</div>',
    'before_title'  => '<div class="widget-title">',
    'after_title'   => '</div>',
);

ob_start();
the_widget( $type, $atts, $args );
$output = ob_get_clean();

return $output;

Есть два общих атрибута, которые будут иметь все шорткоды. Тип — это то место, где пользователь указывает тип виджета, а заголовок — это то место, где пользователь указывает заголовок (здесь никаких сюрпризов).

Как только у нас будет наш $attsмы выясняем $args — параметры боковой панели виджета. Поскольку это коммерческая тема, нам не нужно давать пользователю контроль над этими аргументами, поэтому пока они просто жестко закодированы.

В последнем разделе мы соберем все вместе, чтобы создать окончательный виджет.

Расширение шорткода

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

Все, что нам нужно сделать, это добавить аргумент к шорткоду, добавить класс CSS в наш виджет на основе этого аргумента и позволить нашей таблице стилей сделать все остальное.

add_shortcode( 'widget', 'my_widget_shortcode' );

function my_widget_shortcode( $atts ) {

// Configure defaults and extract the attributes into variables
extract( shortcode_atts(
    array(
        'type'   => ’,
        'title'  => ’,
        'scheme' => 'light'
    ),
    $atts
));

$args = array(
    'before_widget' => '<div class="box widget scheme-' . $scheme . ' ">',
    'after_widget'  => '</div>',
    'before_title'  => '<div class="widget-title">',
    'after_title'   => '</div>',
);

ob_start();
the_widget( $type, $atts, $args );
$output = ob_get_clean();

return $output;

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

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

Вывод

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

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

Сокрушительная редакция
(кп)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Вставка виджетов с шорткодами

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Вставка виджетов с шорткодами

Название: Вставка виджетов с шорткодами . Краткое описание: [ad_1] ⭐ Даниэль . Дата публикации: 15.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»