¿Cómo puedo deshabilitar las actualizaciones del complemento de WordPress?

4 minutos de lectura

avatar de usuario
pp_1

Encontré un excelente complemento para WordPress con licencia GPLv2 e hice muchos cambios en el código fuente, el complemento ahora hace otra cosa. Modifiqué el autor (con los créditos del autor del complemento original), URL, número de versión (de xxx 1.5 a YYY 1.0).

Todo funciona muy bien, pero cuando WordPress busca actualizaciones de complementos, trata mi complemento YYY 1.0 como xxx 1.0 y muestra una notificación sobre la actualización disponible.

Mi complemento modificado YYY 1.0 se instaló copiando archivos de mi computadora, no del repositorio de WP.

¿Qué más tengo que cambiar?

avatar de usuario
Kishan Chauhan

Deshabilitar la actualización del complemento

Agregue este código en el archivo raíz de su complemento.

add_filter('site_transient_update_plugins', 'remove_update_notification');
function remove_update_notification($value) {
     unset($value->response[ plugin_basename(__FILE__) ]);
     return $value;
} 

  • Este método elimina la notificación solo si el complemento está activado. Todavía muestra la notificación de actualización si el complemento está desactivado.

    – aniskhan001

    27 de octubre de 2015 a las 1:32

  • @ aniskhan001 en function.php agregue el código anterior y deshabilite un complemento específico como unset($value->response["akismet/akismet.php"]);

    – Kishan Chauhan

    9 de abril de 2016 a las 5:35


  • esta es la mejor solución ya que utiliza ganchos de plataforma.

    – loretoparisi

    22 de junio de 2016 a las 14:16

  • A partir de 2019, esta es la respuesta correcta que funciona de manera efectiva.

    –Kevin Leary

    22 oct 2019 a las 17:44

  • A partir de junio de 2020, ¡TODAVÍA funciona IMPRESIONANTE! ¡Gracias!

    – Kool Pal

    8 de junio de 2021 a las 14:11

avatar de usuario
Sumith Harshan

Pon este código en el archivo functions.php del tema. Esto está funcionando para mí y lo estoy usando. También esto es para un complemento específico. Aquí debe cambiar la URL del archivo principal del complemento para que coincida con la de su complemento.

 function my_filter_plugin_updates( $value ) {
   if( isset( $value->response['facebook-comments-plugin/facebook-comments.php'] ) ) {        
      unset( $value->response['facebook-comments-plugin/facebook-comments.php'] );
    }
    return $value;
 }
 add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );

Aquí:

“facebook-comments-plugin” => nombre de la carpeta del complemento de comentarios de Facebook

“facebook-comments.php” => archivo principal del complemento. Esto puede ser diferente a index.php

Espero que esto sea de ayuda.

La forma más simple y efectiva es cambiar la versión del complemento que no desea que se actualice. Por ejemplo, si no quiero que wptouch se actualice, abro su archivo de definición, que es como:

/*
    Plugin Name: WPtouch Mobile Plugin
    Plugin URI: http://www.wptouch.com/
    Version: 4.0.4

*/

Aquí en el cambio de versión 4.0.4 a 9999
me gusta:

/*
    Plugin Name: WPtouch Mobile Plugin
    Plugin URI: http://www.wptouch.com/
    Version: 9999

*/

  • No funciona con algunos complementos pagos.

    – Decano Oakley

    7 de junio a las 1:04

avatar de usuario
danio

En el archivo del complemento, habrá una función que buscará actualizaciones. El autor original podría haberle dado cualquier nombre, por lo que tendrá que revisar el código y verificar cada función y lo que hace. Me imagino que la función será bastante obvia en cuanto a lo que hace.

Alternativamente, puede agregar esto a su archivo de complemento:

add_filter( 'http_request_args', 'dm_prevent_update_check', 10, 2 );
function dm_prevent_update_check( $r, $url ) {
    if ( 0 === strpos( $url, 'http://api.wordpress.org/plugins/update-check/' ) ) {
        $my_plugin = plugin_basename( __FILE__ );
        $plugins = unserialize( $r['body']['plugins'] );
        unset( $plugins->plugins[$my_plugin] );
        unset( $plugins->active[array_search( $my_plugin, $plugins->active )] );
        $r['body']['plugins'] = serialize( $plugins );
    }
    return $r;
}

Créditos: http://developersmind.com/2010/06/12/preventing-wordpress-from-checking-for-updates-for-a-plugin/

add_filter('site_transient_update_plugins', '__return_false');

en function.php agregue el código anterior y deshabilite todas las actualizaciones de complementos

avatar de usuario
patricio s

Una solución fácil fue cambiar la versión del complemento en el archivo del complemento. Por ejemplo, si la versión del complemento es 1.2.1. Puede hacerlo como a continuación (100.9.5 algo que el autor del complemento nunca alcanzará)

<?php
/*
 * Plugin Name:       Your Plugin Name
 * Description:       Plugin description.
 * Version:           100.9.5 
*/

avatar de usuario
a granel

Aquí hay una versión actualizada del guión de Mark Jaquith:

.

add_filter( 'http_request_args', 'widget_disable_update', 10, 2 );

function widget_disable_update( $r, $url ) {
    if ( 0 === strpos( $url, 'https://api.wordpress.org/plugins/update-check/' ) ) {
        $my_plugin = plugin_basename( __FILE__ );
        $plugins = json_decode( $r['body']['plugins'], true );
        unset( $plugins['plugins'][$my_plugin] );
        unset( $plugins['active'][array_search( $my_plugin, $plugins['active'] )] );
        $r['body']['plugins'] = json_encode( $plugins );
    }
    return $r;
}

  • Es 2019 y el Actualización del complemento de bloque el complemento todavía funciona bien 🙂 (Solo se puede instalar manualmente, ya que parece ser demasiado antiguo para encontrarlo en la búsqueda del repositorio de complementos desde WordPress).

    – tanio

    21 de junio de 2019 a las 21:49

¿Ha sido útil esta solución?