✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Шаблони та умовна логіка з ООП у WordPress

25

Шаблони стають все більш поширеними у WordPress, і я вважаю, що це добре.

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

Хоча я вважаю, що створення шаблонів – це добре, я не вважаю, що це завжди необхідно. Однак це вміст для іншої публікації.

Замість цього я хочу пройти через процес використання умовної логіки того, чи потрібно відображати частину в шаблоні, і зробити це за допомогою об’єктно-орієнтованого програмування.

Шаблони та умовна логіка з ООП

Для цього припустимо наступне:

  1. У нас є один плагін, який залежить від іншого плагіна для функції.
  2. Другий плагін необов’язковий.
  3. Якщо його немає, ми покажемо сповіщення. Якщо він присутній, ми відобразимо його частково.

Досить прямолінійно, чи не так?

Єдине, що слід зазначити, це те, що вся ця логіка зберігатиметься в основному плагіні (тобто тому, який перевірятиме наявність іншого плагіна).

1 Умовна логіка шаблону

Перше, що потрібно зробити, це мати функцію, яка перевірятиме наявність додаткового плагіна. Причина цього полягає в тому, що шаблон виглядає приблизно так:

<div class="wrap">
    <!-- Snipping out irrelevant code in this file -->
    <form id="yhd-upload-new-item-settings">
        <?php if (!$this->hasSecondaryPlugin()) { ?>
            <?php include_once 'partials/error-inactive-plugin.php'; ?>
        <?php } else { ?>
            <h2>Secondary Plugin Settings</h2>
            <p class="description">The Secondary Plugin is installed and active.</p>
            <form method="post" action="<?php echo esc_html(admin_url('admin-post.php')); ?>">
                <label for="acme-secondary-plugin">
                    <input type="checkbox" name="acme-secondary-plugin" value="true"/>
                    Would you like to automatically use the secondary plugin?
                </label>
                <!-- Snipping out irrelevant code in this file -->
            </form>
        <?php } ?>
    </div>
</div>

І тоді частина може виглядати приблизно так (це залежить від вашої реалізації):

<?php
/**
 * This is the partial displayed when the Secondary Plugin is not active.
 */
?>
<div id="inactive-importer-message" class="error notice is-dismissible">
    <p>[The message you want to display here.]</p>
    <button type="button" class="notice-dismiss">
        <span class="screen-reader-text">Dismiss this notice.</span>
    </button>
</div><!-- #inactive-importer-message -->

Через те, як шаблони включені в WordPress, функція буде жити в межах класу, а клас перевірятиме наявність плагіна.

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

2 Код плагіна на стороні сервера

Коли у вас є загальне уявлення про те, як це буде працювати, настав час писати код у вашому класі.

Пам’ятайте, що це проста функція: їй просто потрібно перевірити наявність плагіна. Ви можете зробити це кількома способами, але найпоширенішим може бути використання функції API is_active_plugin .

Зауважте, що використання цієї функції залежить від того, що ви знаєте назву плагіна, який використовуєте. Якщо ні, є інші способи, але це виходить за межі цієї публікації.

У будь-якому разі, оскільки логіка є умовною, вона має повертати логічне значення, і це саме те, що робить наведена вище функція API. Отже, функція на стороні сервера може виглядати приблизно так:

<?php

/**
 * Determines if the Secondary Importer is is activated.
 *
 * @return bool True if the the pklugin is active; false, otherwise.
 */
private function hasSecondaryPlugin()
{
    return in_array(
        'secondary-plugin/secondary-plugin.php',
        get_option('active_plugins')
    );
}

І оскільки код шаблону викликає цю функцію (яку ви бачите вище), вона визначатиме, чи потрібно показувати частково чи ні.

Досить легко

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

І оскільки я продовжую працювати над Основами ООП з учасниками сайту, я вважаю, що також важливо поділитися кращими практиками з тими, хто, можливо, не є учасниками, але хоче написати більш організований код.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі