✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Виджеты WordPress: рефакторинг, часть 9

14

Хотя последний пост в этой серии статей о рефакторинге был не очень длинным, я думаю, что он был немного запутанным. То есть потребовалось изрядное количество работы, чтобы получить код в том месте, где нам будет легче с ним работать.

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

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

Шаблон виджета WordPress: рефакторинг, часть 9

Напомним из последнего поста:

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

И это подводит нас именно к тому, к чему мы движемся в этом конкретном посте. А именно, мы собираемся написать административный интерфейс, который позволит нам:

  • определить заголовок для виджета,
  • определить текстовое содержимое для виджета,
  • и переключите, хотим ли мы показать заголовок.

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

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

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

А пока давайте добавим в пользовательский интерфейс три элемента:

  1. добавить текстовый ввод для заголовка виджета,
  2. включить элемент textarea для отображения того, что может быть абзацем текста,
  3. и, наконец, добавьте флажок для переключения информации о заголовке.

Для этого нам нужно отредактировать файл в  каталоге Views. А именно, мы собираемся обновить  файл Admin.php. Мы начнем с элементов точно по мере необходимости без посторонней разметки.

<input type="text" name="widget-title" value="" />

<textarea name="widget-content"></textarea>

<label>
    <input
        type="checkbox"
        value="1"
        name="widget-title-enabled"
    />
    Display Title?
</label>

Пока что на внешнем интерфейсе не так много интересного, но это приближает нас к тому, чего мы хотим.

Класс для администраторов

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

С этой целью мы создадим второй класс под названием WidgetAdmin в каталоге и пространстве имен WordPress .

В этот файл мы включим следующий код :

<?php

/*
 * This file is part of WordPress Widget Boilerplate
 * (c) Tom McFarlin <tom@tommcfarlin.com>
 *
 * This source file is subject to the GPL license that is bundled
 * with this source code in the file LICENSE.
 */

namespace WordPressWidgetBoilerplateWordPress;

/**
 * Manages the administrative functionality of the widget.
 */
class WidgetAdmin extends Widget
{
    /**
     * {@inheritdoc}
     */
    public function __construct($widgetSlug)
    {
        parent::__construct($widgetSlug);
    }

    /**
     * Displays the administrative view of the form and includes the options
     * for the instance of the widget as arguments passed into the function.
     *
     * @param array $instance the options for the instance of this widget.
     */
    public function form($instance)
    {
        include plugin_dir_path(__FILE__).'Views/Admin.php';
    }
}

Затем в исходном коде для создания экземпляра нашего виджета мы изменим эту строку :

<?php

/**
 * Registers the core Widget class using the WordPress APIs.
 */
public function load()
{
    register_widget(new Widget('widget-name'));
}

Чтобы выглядеть так :

<?php
/**
 * Registers the core Widget class using the WordPress APIs.
 */
public function load()
{
    register_widget(new WidgetAdmin('widget-name'));
}

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

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

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

Возьмите следующий код :

<input type="text" name="widget-title" value="" />

<textarea name="widget-content"></textarea>

<label>
    <input
        type="checkbox"
        value="1"
        name="widget-title-enabled"
    />
    Display Title?
</label>

И обновите его, чтобы он выглядел так :

<div class="widget-content">
    <p>
        <input
            type="text"
            name="widget-title"
            value=""
            placeholder="Widget Title"
            class="widefat"
        />
    </p>

    <p>
        <textarea
            name="widget-content"
            placeholder="Widget Content"
            style="width:100%;"></textarea>
    </p>

    <p>
        <input
            type="checkbox"
            value="1"
            name="widget-title-enabled"
            class="checkbox"
        />
        <label for="widget-title-enabled">Display Title?</label>
    </p>
</div><!-- .widget-content -->

Предполагая, что все прошло хорошо, теперь вы должны увидеть что-то вроде этого:

Виджеты WordPress: рефакторинг, часть 9

И на этом мы собираемся остановиться с административными функциями для этого поста. Помните, что вы также можете отслеживать все это в ветке разработки на GitHub.

Очистка и сериализация

В следующем посте мы рассмотрим, что необходимо для очистки и сериализации (или очистки и сохранения) содержимого нашего виджета.

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

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

Источник записи: tommcfarlin.com

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