Скрипт обновления Wordpress темы с github

190
24 июля 2018, 09:20

Переделываю этот скрипт (http://oddstyle.ru/wordpress-2/stati-wordpress/razvertyvanie-wordpress-plaginov-cherez-github-s-pomoshhyu-transients.html) под обновление темы. Всё работает, но после обновления тема оказывается в новой папке с именем типа "аккаунт-репозиторий-наборцифр", из старой папки всё удаляется. Копаю третий день, не могу понять где искать проблему.

<?php
class Updater{
protected $file;
private $theme;
private $basename;
private $username;
private $repository;
private $authorize_token;
private $github_response;
public function __construct($file)
{
    $this->file = $file;
    add_action( 'admin_init', array( $this, 'set_theme_properties' ) );
    return $this;
}
public function set_theme_properties() {
    $this->theme    = wp_get_theme('irecommendz' );
    $this->basename = wp_basename( $this->file );
}
public function set_username( $username )
{
    $this->username = $username;
}
public function set_repository( $repository )
{
    $this->repository = $repository;
}
public function authorize( $token )
{
    $this->authorize_token = $token;
}
public function initialize()
{
    add_filter( 'pre_set_site_transient_update_themes', array( $this, 'modify_transient' ), 10, 1 );
    add_filter( 'upgrader_post_install', array( $this, 'after_install' ), 10, 3 );
}

private function get_repository_info() {
    if ( is_null( $this->github_response ) ) { // Do we have a response?
        $request_uri = sprintf( 'https://api.github.com/repos/%s/%s/releases', $this->username, $this->repository ); // Build URI
        if ( $this->authorize_token ) { // Is there an access token?
            $request_uri = add_query_arg( 'access_token', $this->authorize_token, $request_uri ); // Append it
        }
        $response = json_decode( wp_remote_retrieve_body( wp_remote_get( $request_uri ) ), true ); // Get JSON and parse it
        if ( is_array( $response ) ) { // If it is an array
            $response = current( $response ); // Get the first item
        }
        if ( $this->authorize_token ) { // Is there an access token?
            $response['zipball_url'] = add_query_arg( 'access_token', $this->authorize_token, $response['zipball_url'] ); // Update our zip url with token
        }
        $this->github_response = $response; // Set it to our property
    }
}
public function modify_transient( $transient ) {
    if( property_exists( $transient, 'checked') ) { // Check if transient has a checked property
        if( $checked = $transient->checked ) { // Did Wordpress check for updates?
            $this->get_repository_info(); // Get the repo info
            $out_of_date = version_compare( $this->github_response['tag_name'], $this->theme['version'], 'gt' ); // Check if we're out of date
            if( $out_of_date ) {
                $new_files = $this->github_response['zipball_url']; // Get the ZIP
                $slug = current( explode('/', $this->basename ) ); // Create valid slug
                $theme = array( // setup our plugin info
                    'url' => $this->theme["ThemeURI"],
                    'slug' => $slug,
                    'package' => $new_files,
                    'new_version' => $this->github_response['tag_name']
                );
                //$transient->response[$this->basename] = (object) $theme; // Return it in response
                $transient->response[$this->basename] =  $theme;
            }
        }
    }
    return $transient; // Return filtered transient
}
public function after_install( $response, $hook_extra, $result ) {
    global $wp_filesystem; // Get global FS object
    $install_directory = get_template_directory(); // Our plugin directory
    $wp_filesystem->move( $result['destination'], $install_directory); // Move files to the plugin dir
    $result['destination'] = $install_directory; // Set the destination for the rest of the stack
    return $result;
}
}
 $updater = new Updater( get_template_directory());
 $updater->set_username('naumovtop');
 $updater->set_repository('irecommendz');
 $updater->authorize('your_token');
 $updater->initialize(); // initialize the updater
READ ALSO
Как добавить поле поиск на Google Maps?

Как добавить поле поиск на Google Maps?

Не могу понять как добавить поле поиска на карту

188
Как передать токен пользователя сайта в telegram, что бы синхронизировать связать их?

Как передать токен пользователя сайта в telegram, что бы синхронизировать связать их?

задача следующая: Нужно как то связать пользователей моего сайта с их телеграм аккаунтамиЯ так понимаю что мне нужно на сайте сделать какую...

181
хранение множества категорий в базе

хранение множества категорий в базе

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

171
Ошибка при выполнении sql-запроса PHP

Ошибка при выполнении sql-запроса PHP

При исполнении sql-запроса выдаёт ошибку

153