¿Cómo evitar conflictos de nombre de complemento desde el notificador de actualización?

4

He incluido un truco rápido como complemento para agregar Google Analytics a mi sitio. Lo nombré "Google Analytics" y, efectivamente, WP me ofreció actualizar mi complemento v0.1 a un complemento aleatorio del repositorio de complementos.

Recuerdo vagamente que se planteó varias veces alrededor de WP 2.7 a 3.0. ¿Hay una nueva API disponible en algún lugar para deshabilitar esto, o es la única manera de evitar que aún sea prefijando los nombres de los complementos (no su nombre de archivo, sino su nombre real como se muestra en la pantalla de Complementos) para hacerlos únicos?

En mi caso de uso específico, el complemento se encuentra en mc-ga/mc-ga.php y se llama "Google Analytics", junto con algunos otros campos de metadatos al principio del encabezado del archivo del complemento. WP produce un aviso de actualización basado en "Google Analytics" (no pude encontrar un archivo de complemento mc-ga.php en el repositorio).

¿WP permite agregar un campo adicional que no conozco, por ejemplo? ¿Una URL de repo o algo realmente único, para evitar tales conflictos?

    
pregunta Denis de Bernardy 29.10.2013 - 11:07

4 respuestas

5

Puede eliminar su complemento de la lista updateble con:

add_action( 'plugins_loaded', function(){
    add_filter( 'site_transient_update_plugins', function ( $value ) 
    {
        if( isset( $value->response['google-analytics/google-analytics.php'] ) )
            unset( $value->response['google-analytics/google-analytics.php'] );
        return $value;
    });
});

Agregar este filtro eliminará nuestro complemento homónimo por completo de las comprobaciones de actualización. Y supone que estamos haciendo las actualizaciones manualmente a través de simples cargas FPT -o similares. Pero hay muchos factores, como se explica en Si cambio el nombre de un complemento (en su archivo php principal), ¿todavía recibo notificaciones de actualización? . Según la descripción del OP (mismo nombre, slug diferente), sin usar un filtro, quizás lo mejor sea establecer el encabezado del complemento Version en un número mayor o usar un número menos convencional como yyyy.mm.dd .

Si estamos configurando nuestro propio Repo , creo que no habrá ningún conflicto.

    
respondido por el brasofilo 29.10.2013 - 11:34
0

Lo que sugiero es: antes de crear su complemento, primero compruebe si el nombre que va a dar ya existe en el repositorio de complementos de WordPress . Si no es así, entonces puede avanzar y desarrollar el complemento.

En el caso de que exista, asigne un nombre diferente a su complemento. Debido a que la actualización se basa en el nombre, no puede administrar dos complementos diferentes con el mismo nombre. WordPress realiza esta opción de actualización automáticamente desde el repositorio oficial.

    
respondido por el sun 29.10.2013 - 11:36
0

Agregando este para la posteridad, en caso de que alguien más lo necesite:

if (!defined('STRICTER_PLUGIN_UPDATES')) define('STRICTER_PLUGIN_UPDATES', false);

# ============
# WP Updates
# ============

if (STRICTER_PLUGIN_UPDATES) :

# - Drop plugin upgrades when the slugs don't match

add_filter('site_transient_update_plugins', function($updates) {
    if (!$updates->response) return $updates;

    foreach ($updates->response as $key => $response) {
        $slug = strpos($key, '/') !== false ? dirname($key) : basename($key, '.php');
        if ($slug != $response->slug) {
            unset($updates->response[$key]);
        }
    }

    return $updates;
});

endif; # STRICTER_PLUGIN_UPDATES
    
respondido por el Denis de Bernardy 29.10.2013 - 14:02
0

Si tiene un complemento que es personalizado para un sitio, entonces dé a su nombre el nombre del sitio como prefijo.

Ciertamente no vamos a permitir un complemento llamado "Example.com - Google Analytics" en el directorio de WordPress.org.

Además, agregue un campo "URI de complemento" al encabezado del complemento. El URI del complemento se utiliza como parte del proceso de coincidencia y también proporciona algo más exclusivo que el nombre con el que se compara.

    
respondido por el Otto 29.10.2013 - 14:55

Lea otras preguntas en las etiquetas