Создание уведомлений об обновлениях для моих тем - PullRequest
1 голос
/ 04 октября 2019

Я создал одну из своих тем. Я хочу добавить функцию обновления через api

При использовании темы уведомление должно отображаться, если это необходимо для обновления темы

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

Примечание: Если у вас нет идеи для API, вы можете предоставить другой код

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете использовать site_transient_update_themes здесь:

add_filter ( 'site_transient_update_themes', 'theme_check_for_update' );

function theme_check_for_update ( $transient ) {
    // Check Theme is active or not.
    if( empty( $transient->checked['Your-Theme-Name'] ) )
        return $transient;

    $request = theme_fetch_data_of_latest_version();

    if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 200 ) {
        return $transient;
    } else {
        $response = wp_remote_retrieve_body( $request );
    }

    $data = json_decode( $response );

    if ( version_compare( $transient->checked['Your-Theme-Name'], $data->new_version, '<' ) ) {
        $transient->response['Your-Theme-Name'] = (array) $data;

        add_action('admin_notices', 'theme_update_admin_notice');
    }

    return $transient;
}

function theme_fetch_data_of_latest_version() {
    // Your API call to check for new version
    $request = wp_safe_remote_get( 'https://yourdomain.com/api/upgrade-json/' );

    /*
    Response Shoul be in following format:
    {
        "new_version": "1.0.4",
        "url": "https://yourdomain.com/theme/changelog/",
        "package": "https://yourdomain.com/theme/theme.zip"
    }
    */

    return $request;
}

function theme_update_admin_notice(){

    echo '<div class="notice notice-warning notice-alt is-dismissible">
          <p>New Theme Update is available.</p>
         </div>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...