Existe-t-il un moyen de désactiver les mises à jour principales et de plugins? Je modifie un plugin et un peu de WordPress Core (je sais que c'est un péché de le faire), mais je ne peux pas m'en empêcher.
Oui, tu peux faire ça…
define( 'DISALLOW_FILE_MODS', true );
Mettez cet extrait dans votre fichier wp-config.php
et vous pourrez désactiver les mises à jour principales et de plug-in.
Il devrait être aussi simple que cela:
<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Plugin Updates */
remove_action( 'load-update-core.php', 'wp_update_plugins' );
Les mises à jour mono-thèmes et thématiques peuvent être désactivées par ce script mon Mark Jaquith:
Pour les plugins à partir de certains fichiers de thèmes
// Plugins
add_filter( 'http_request_args', 'cws_hidden_plugin_12345', 5, 2 );
function cws_hidden_plugin_12345( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/plugins/update-check' ) )
return $r;
$plugins = unserialize( $r['body']['plugins'] );
unset(
$plugins->plugins[ plugin_basename( __FILE__ ) ],
$plugins->active[ array_search( plugin_basename( __FILE__ ), $plugins->active ) ]
);
$r['body']['plugins'] = serialize( $plugins );
return $r;
}
Pour les thèmes à partir d'un fichier de thèmes functions.php
// Themes
add_filter( 'http_request_args', 'cws_hidden_theme_12345', 5, 2 );
function cws_hidden_theme_12345( $r, $url )
{
if ( 0 !== strpos( $url, 'http://api.wordpress.org/themes/update-check' ) )
return $r;
$themes = unserialize( $r['body']['themes'] );
unset(
$themes[ get_option( 'template' ) ],
$themes[ get_option( 'stylesheet' ) ]
);
$r['body']['themes'] = serialize( $themes );
return $r;
}
Depuis n'importe quel plugin personnalisé comme décrit dans cette réponse, ici sur la pile }:
<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Aksimet Updates */
add_filter( 'wpse120589DisableAkismetUpdates', 'wpse120589DisableAkismetUpdates' );
function filter_plugin_updates( $value )
{
unset( $value->response['akismet/akismet.php'] );
return $value;
}
En fait, devrait être aussi simple que cela:
<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#120589) Disable Core Updates */
add_filter( 'pre_site_transient_update_core', '__return_null' );
Pour les anciennes versions John Billion a écrit un plugin complet qui les cible tous.
Andi Nacin vient de mettre en ligne un article sur WordPress/Make qui rentre dans les détails de ce sujet:
Le contrôle de version est un commutateur d'arrêt:
Si WordPress détecte un système de contrôle de version, il reconnaît que vous savez ce que vous faites et évite toute mise à jour automatique. Il recherche Subversion, Git, Mercurial et Bazaar, et il est partout.
Cela fonctionne en recherchant deux répertoires (ABSPATH et tout ce que vous mettez à jour, comme
WP_PLUGINS_DIR
ouWP_LANG_DIR
) pour les répertoires VCS (.svn
,.git
,.hg
,.bz
). Et il a également l'air d'un niveau - et continue de regarder jusqu'à ce qu'il atteigne la racine du lecteur. Donc, si vous exécutez une seule commande Subversion à/
ou/var/www/
ou/var/www/mysite.com/
, l'installation de WordPress à/var/www/mysite.com/public_html/wordpress/
ne pourra pas recevoir de mises à jour. Clairement, il se trompe sur le site de la prudence.
Il en va de même pour la désactivation de l'éditeur de fichiers et de thèmes:
La constante
DISALLOW_FILE_MODS
bloque tout type de modification du système de fichiers, non seulement par les mises à jour en arrière-plan, mais également par tous les utilisateurs. Alors, les éditeurs de fichiers sont partis; la capacité de mettre à jour le noyau, les thèmes ou les plugins; et la possibilité d'installer de nouveaux thèmes ou plugins.
Seul commutateur wp-config.php
:
define( 'AUTOMATIC_UPDATER_DISABLED', (bool) true/false );
et
# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );
# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );
# Enables core updates for minor releases (default):
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
Plus de détails sur le post lié.
Remarque: Tout le code ci-dessus est récupéré au cours d'une recherche google de 5 minutes. Il n'a donc pas été testé, mais uniquement visuellement différencié/testé vis-à-vis du code source GitHub WordPress et des résultats de recherche GitHub. Vous devez vérifier le contenu vous-même. En outre, pour l'avenir, veuillez inclure ces recherches dans votre question.
simple, ne modifiez pas le noyau ...... modifier le noyau, c’est fondamentalement brader wordpress et à moins que vous ne fassiez partie d’une équipe de développement capable de maintenir une fourchette longtemps, vous mettez votre client dans une impasse où chemin de mise à niveau est de réaménager le site. Il est peut-être d'accord avec ça, mais c'est quelque chose qui doit être convenu à l'avance.
Quoi qu'il en soit, la désactivation de la mise à jour automatique ne sera pas suffisante dans votre cas et vous devrez également supprimer toutes les notifications de mise à niveau du tableau de bord, ou mieux, assurez-vous que le cient n'a pas d'accès FTP au serveur.
La même logique s’applique aux plugins non triviaux d’une source réputée (exemple, jetpack), à l’exception que dans ce cas, vous pourrez peut-être conserver la fourchette à long terme.
Pour désactiver les mises à jour de plug-in et décourager quiconque d'essayer de le mettre à niveau manuellement, vous pouvez simplement changer le nom du plug-in et son répertoire. Bien sûr, vous devez utiliser un nom de plugin et un nom de répertoire non utilisés par un autre plugin, quelque chose comme "${original plugin name} tailored for $client DON"T UPGRADE"
comme nouveau nom de plugin et ${original plugin name}-for-$client
comme nouveau répertoire.