Complemento de WordPress – Actualización autohospedada

2 minutos de lectura

Estoy desarrollando un complemento de WordPress que requiere actualizaciones, aunque la versión del complemento se está verificando desde mi servidor. Hay varios complementos que he desarrollado que usan exactamente el mismo servidor para buscar nuevas versiones. El problema que estoy experimentando es que cuando todos los complementos requieren una actualización y hago clic en Ver detalles, uno de los complementos mostrará detalles de la actualización (versión, descripción, etc.), pero los otros complementos no mostrarán ninguna información. . Después de algunas depuraciones, puedo ver que el servidor está devolviendo datos con seguridad.

Mi pregunta es, ¿cómo puedo aplicar el filtro plugins_api varias veces sin que entre en conflicto con los otros complementos?

avatar de usuario
dev.xiligroup

Tu observación es correcta. No es obvio. Incluso el libro de Brad y Ozh (Plugin development ed. Wrox) incluye un error en el ejemplo de la página 267 en el capítulo “haz tu propio repositorio API”. Al igual que tú, pasé (perdí) tiempo para encontrar el problema con dos complementos en una API alternativa…

La solución:
Recuerde que ese primer parámetro en el filtro WP es el valor original pasado al filtro. Entonces, para concatenar los filtros (enumerados por complementos que usan una API alternativa)… la primera línea debe ser:

function xiliw_altapi_information( $false, $action, $args ) {
    $plugin_slug = plugin_basename( __FILE__ );
        // Check if this plugins API is about this plugin
        if( $args->slug != $plugin_slug ) {
            return $false; // var to conserve the value of previous filter of plugins list in alternate api. fixes book error not val false
        }

        // POST data to send to your API
        $args = array(
            'action' => 'plugin_information',
            'plugin_name' => $plugin_slug,
            'version' => $transient->checked[$plugin_slug],
            'registration' => $this->registration
        );//../..

Al hacer esta prueba, cada vez que se llama a la lista de ganchos, solo uno, el complemento en cuestión, da la respuesta correcta para mostrar la información de la ventana de bienvenida.

Si tengo tiempo, probablemente publicaré pronto un artículo más completo sobre una clase para administrar esta poderosa API alternativa y cómo agregarla a un complemento -privado-.

  • Solo para que quede claro para todos, la clave es que el código en el libro devuelve el booleano ‘falso’ mientras que el código anterior devuelve la variable de PHP ‘$falso’. Muy sutil, pero una gran diferencia. Gracias por esta respuesta +1.

    – rcravens

    18 de marzo de 2012 a las 15:42

  • Hay un buen argumento para cambiar el nombre de ese primer argumento a algo que no sea $false. ¿Por qué no intentarlo? $original?

    – Tom Auger

    1 oct 2012 a las 19:59

¿Ha sido útil esta solución?