Home > CMS Tutorial > WordPress > body text

Enhance your theme with the Envato WordPress Toolkit: Library

王林
Release: 2023-09-02 12:41:01
Original
924 people have browsed it

使用 Envato WordPress 工具包增强您的主题:库

In the last part of this tutorial, we learned how to use the TGM plugin activation class to require the Envato WordPress Toolkit plugin anytime our theme is in use. The plugin allows users to install and update purchased themes in the admin.

The next part will teach you how to implement the Envato WordPress Toolkit library so that we can use the Envato Marketplace API to regularly check when updates are available for our theme.

When an update is available, we will display a notification in the admin and direct users to access the plugin to update.


1. Includes toolkit library

We first need to include the toolkit library into our project. Download the Envato WordPress Toolkit Library ZIP file. Unzip and copy the folder envato-wordpress-toolkit-library to the inc folder in your theme. You should end up with these paths:

  • mytheme/inc/envato-wordpress-toolkit-library/class-envato-protected-api.php
  • mytheme/inc/envato-wordpress-toolkit-library/class-envato-wordpress-theme-upgrader.php

NOTE: You can change the location of the above files to suit your needs. Alternatively, you can download the full source code from the download link at the top of this article.


2. Administrator hook function

Now we can start coding. We will hook the admin_init operation. Add the following code to your functions.php:

/**
 * 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' );
Copy after login

3. Using toolkit plug-in information

The toolkit library requires an Envato username and API key to work. Since we required the Toolkit plugin in the previous tutorial, we can use the input values ​​for the Username and API Key fields found in its settings. If these fields are not filled in, we can display a notification asking the user to enter them in the Toolkit plugin.

// 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;
}
Copy after login

We need to add the corresponding hook function externally to display our management notifications:

/**
 * 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='" . admin_url() . "admin.php?page=envato-wordpress-toolkit'>Envato WordPress Toolkit Plugin</a>" );
    echo "<div id='message' class='updated below-h2'><p>{$message}</p></div>";
}
Copy after login

4.Regular update check

The toolkit library always checks for theme updates using the Envato Marketplace API. This is not good because executing it every time a user visits the admin page will significantly slow down the page load time. We just need to check for updates regularly.

Checking every 3 hours sounds like a good idea:

// 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() );
Copy after login

5. Check for updates

Finally, we can use this library to check for updates:

// 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!
Copy after login

6.Theme update notification

From this moment on, you have the option of automatically updating the theme using the toolkit library function $upgrader->upgrade_theme(); However, I believe it is generally a good idea to give the user a choice.

My suggestion is to only show notifications for theme updates and allow users to update using the Toolkit plugin:

// Add update alert, to update the theme
if ( $updates->updated_themes_count ) {
    add_action( 'admin_notices', 'envato_toolkit_admin_notices' );
}
Copy after login

We need to display the function that displays the notification outside the current function:

/**
 * 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='" . admin_url() . "admin.php?page=envato-wordpress-toolkit'>Envato WordPress Toolkit Plugin</a>" );
    echo "<div id='message' class='updated below-h2'><p>{$message}</p></div>";
}
Copy after login

Why use this plugin in the first place?

You might think you could also just use the Toolkit library without the Toolkit plugin and then maybe just display our own username and API key form in the theme options.

While this is entirely possible, using this plugin brings us some benefits:

  1. In a new theme activation, our theme will automatically check for updates if the Toolkit plug-in has been installed previously.
  2. We don't need to add an extra set of forms for users to fill out.
  3. Users can update the Toolkit plugin themselves, so changes in the Marketplace API can be applied to WordPress instances without any theme guidance.

in conclusion

That's it! We have integrated the Envato WordPress Toolkit plugin and library to check for theme updates. Now, our customers will receive an admin notification once an update is available in the market. The best thing we've done is they can easily perform updates without leaving the admin.

You can continue to download the complete source code from the link above the article. The code also covers topics covered in the previous part of this tutorial.

Since this is my first tutorial series, I would really appreciate any feedback, comments, and suggestions. Let me know what you think!

The above is the detailed content of Enhance your theme with the Envato WordPress Toolkit: Library. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template