Статьи

Интеграция Envato WordPress Toolkit в вашу тему: Библиотека

В последней части руководства мы узнали, как использовать класс активации плагинов TGM, чтобы запрашивать плагин Envato WordPress Toolkit всякий раз, когда используется наша тема. Плагин позволяет пользователю устанавливать и обновлять приобретенные темы в админке.

В следующей части вы узнаете, как реализовать библиотеку Envato WordPress Toolkit, чтобы мы могли периодически проверять наличие обновлений для нашей темы с помощью API Envato Marketplace.

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


Сначала нам нужно включить библиотеку инструментов в наш проект. Загрузите ZIP-архив библиотеки Envato WordPress Toolkit . Разархивируйте его и скопируйте папку envato-wordpress-toolkit-library в папку inc вашей темы. Вы должны в конечном итоге с этими путями:

  • MyTheme / вкл / Envato-WordPress-инструментарий библиотека / класса Envato-защищенного api.php
  • MyTheme / вкл / Envato-WordPress-инструментарий библиотека / класса Envato-WordPress-тема-upgrader.php

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


Теперь мы можем начать кодирование. Мы подключимся к действию admin_init . Добавьте следующий код в ваш functions.php :

01
02
03
04
05
06
07
08
09
10
11
12
13
/**
 * Load the Envato WordPress Toolkit Library check for updates
 * and direct the user to the Toolkit Plugin if there is one
 */
function envato_toolkit_admin_init() {
 
    // Include the Toolkit Library
    include_once( get_template_directory() . ‘/inc/envato-wordpress-toolkit-library/class-envato-wordpress-theme-upgrader.php’ );
 
    // Add further code here
 
}
add_action( ‘admin_init’, ‘envato_toolkit_admin_init’ );

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

1
2
3
4
5
6
// Use credentials used in toolkit plugin so that we don’t have to show our own forms anymore
$credentials = get_option( ‘envato-wordpress-toolkit’ );
if ( empty( $credentials[‘user_name’] ) || empty( $credentials[‘api_key’] ) ) {
    add_action( ‘admin_notices’, ‘envato_toolkit_credentials_admin_notices’ );
    return;
}

Нам нужно добавить соответствующую функцию ловушки снаружи, чтобы отобразить уведомление администратора:

1
2
3
4
5
6
7
8
/**
 * Display a notice in the admin to remind the user to enter their credentials
 */
function envato_toolkit_credentials_admin_notices() {
    $message = sprintf( __( «To enable theme update notifications, please enter your Envato Marketplace credentials in the %s», «default» ),
        «<a href='» .
    echo «<div id=’message’ class=’updated below-h2′><p>{$message}</p></div>»;
}

Библиотека инструментария всегда проверяет использование API Envato Marketplace для обновлений тем. Это нехорошо, поскольку выполнение его каждый раз, когда пользователь посещает страницу администратора, может значительно замедлить время загрузки страницы. Нам нужно только периодически проверять наличие обновлений.

Проверка каждые 3 часа звучит как хорошая идея:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
// Check updates only after a while
$lastCheck = get_option( ‘toolkit-last-toolkit-check’ );
if ( false === $lastCheck ) {
    update_option( ‘toolkit-last-toolkit-check’, time() );
    return;
}
 
// Check for an update every 3 hours
if ( 10800 < ( time() — $lastCheck ) ) {
    return;
}
 
// Update the time we last checked
update_option( ‘toolkit-last-toolkit-check’, time() );

Наконец, мы можем проверить наличие обновлений с помощью библиотеки:

1
2
3
4
5
// Check for updates
$upgrader = new Envato_WordPress_Theme_Upgrader( $credentials[‘user_name’], $credentials[‘api_key’] );
$updates = $upgrader->check_for_theme_update();
 
// If $updates->updated_themes_count == true then we have an update!

С этого момента вы можете выбрать автоматическое обновление темы с помощью функции библиотеки инструментов $upgrader->upgrade_theme(); однако я считаю, что предоставление пользователям выбора — это хорошая идея.

Я предлагаю просто отобразить уведомление об обновлении темы и позволить пользователю обновить с помощью плагина Toolkit:

1
2
3
4
// Add update alert, to update the theme
if ( $updates->updated_themes_count ) {
    add_action( ‘admin_notices’, ‘envato_toolkit_admin_notices’ );
}

Нам нужно отобразить функцию, которая отображает уведомление за пределами нашей текущей функции:

1
2
3
4
5
6
7
8
/**
 * Display a notice in the admin that an update is available
 */
function envato_toolkit_admin_notices() {
    $message = sprintf( __( «An update to the theme is available! Head over to %s to update it now.», «default» ),
        «<a href='» .
    echo «<div id=’message’ class=’updated below-h2′><p>{$message}</p></div>»;
}

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

Хотя это вполне возможно, использование плагина дает нам несколько преимуществ:

  1. При новых активациях темы наша тема будет автоматически проверять наличие обновлений, если плагин Toolkit уже был установлен ранее.
  2. Нам не нужно включать дополнительный набор форм для наших пользователей, чтобы заполнить.
  3. Плагин Toolkit может обновляться самими пользователями, поэтому изменения в Marketplace API можно применять к экземпляру WordPress без каких-либо указаний по теме.

Это оно! Мы интегрировали и плагин Envato WordPress Toolkit, и библиотеку для проверки обновлений темы. Теперь, как только обновление станет доступно на торговой площадке, наши клиенты получат уведомление администратора. Лучшее, что мы сделали, это то, что они могут легко выполнить обновление, не покидая администратора.

Вы можете скачать полный исходный код по ссылке над статьей. Код также содержит темы, описанные в предыдущей части этого урока.

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