0
102
2015-08-19

Исключить плагин или тему из обновлений WordPress

Если Вы практикующий веб разработчик имеющий в арсенале не один написанный плагин или тему, Вам обязательно пригодятся функции которые отключат обновления как для тем, так и для плагинов.
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Как отключить обновление плагина в WordPress

Я иногда сталкивался с ситуацией, когда мной был реализован собственный плагин для клиента и я конечно же дал плагину уникальное название. Затем кто-то из разработчиков выпускает плагин с тем же именем, ну а позже данный разработчик публикует обновление... Теперь для моего плагина есть «обновление» которое было подхвачено WP автоматически не смотря на то что данное обновление было выпущено не мной, а все это из-за одинаковых названий плагинов... За тем клиент заходит и обновляет плагин, и обнаруживает, что он потерял пользовательскую функциональность, которую я для него реализовал.

Если вы создаете пользовательский плагин для клиента, обязательно отключите обновления плагинов!

<?php
/**
* Убедитесь, что определенный плагин никогда не будет обновляеться.
* Это работает путем удаления плагина из списка доступных обновлений.
*/
add_filter( 'http_request_args', function ( $response, $url ) {
    if ( 0 === strpos( $url, 'https://api.wordpress.org/plugins/update-check' ) ) {
        $basename = plugin_basename( __FILE__ );
        $plugins  = json_decode( $response['body']['plugins'] );
        unset( $plugins->plugins->$basename );
        unset( $plugins->active[ array_search( $basename, $plugins->active ) ] );
        $response['body']['plugins'] = json_encode( $plugins );
    }
    return $response;
}, 10, 2 );

Просто поместите приведенный выше код в основной файл вашего плагина, и WordPress никогда не покажет, что он имеет обновление.

Как отключить обновление темы в WordPress

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

Если вы изменяете общедоступную тему, обязательно отключите обновления темы!

<?php
/**
 * Ensure that a specific theme is never updated. This works by removing the
 * theme from the list of available updates.
 */
add_filter( 'http_request_args', function ( $response, $url ) {
    if ( 0 === strpos( $url, 'https://api.wordpress.org/themes/update-check' ) ) {
        $themes = json_decode( $response['body']['themes'] );
        unset( $themes->themes->{get_option( 'template' )} );
        unset( $themes->themes->{get_option( 'stylesheet' )} );
        $response['body']['themes'] = json_encode( $themes );
    }
    return $response;
}, 10, 2 );

Примечание: Это работает, только если тема активна! Если вы хотите запретить обновления, даже если тема неактивна, вам нужно будет добавить код в плагин и использовать жестко закодированные значения вместо get_option('template') и get_option('stylesheet').

  • Оба приведенных выше фрагмента кода являются обновленной версией кода первоначально опубликованого Mark Jaquith. *




Статья была переведена для блога TechBlog.SDStudio.top

Источник: wpscholar.com