Añade la opción ‘Descargar Plugin como .Zip’ a tu lista de plugins

¿Alguna vez has querido descargar un plugin de WordPress directamente desde tu panel de administración, sin tener que lidiar con FTP o cPanel? Nuestro nuevo shortcode hace exactamente eso. Este código, que puedes añadir a tu sitio de WordPress, te permite descargar cualquier plugin que tengas instalado en tu sitio directamente desde la página de plugins de tu panel de administración, incluso puedes descargarte TODOS los plugins en un zip con todos los plugins comprimidos para subirlos en otra web.

Imagina que tienes un plugin que te encanta y quieres usarlo en otro sitio web. Normalmente, tendrías que ir a la página del plugin en el repositorio de WordPress, descargarlo, y luego subirlo a tu otro sitio. O tal vez tendrías que acceder a tu sitio a través de FTP, encontrar el plugin en la carpeta de plugins, y luego descargarlo a tu ordenador.

Con nuestro shortcode, todo eso es cosa del pasado. Una vez que añades este código a tu sitio, simplemente tienes que ir a la página de plugins de tu panel de administración. Allí, junto a cada plugin, verás una nueva opción: «DESCARGAR». Haz clic en ella, y el plugin se descargará directamente a tu ordenador.

 

Añade la opción ‘Descargar Plugin como .Zip a tu lista de plugins

 

Este shortcode es especialmente útil si tienes plugins personalizados o premium que no están disponibles en el repositorio de WordPress. Con este código, puedes descargar fácilmente estos plugins para usarlos en otros sitios.

Además, este shortcode es seguro. Sólo los administradores del sitio pueden descargar plugins, por lo que no tienes que preocuparte de que usuarios no autorizados descarguen tus plugins.

En resumen, este shortcode te ahorra tiempo y te facilita la gestión de tus plugins. Ya no tienes que lidiar con FTP o buscar plugins en el repositorio de WordPress. Simplemente ve a la página de plugins de tu panel de administración, haz clic en «DESCARGAR», y tendrás tu plugin listo para usar en cualquier otro sitio.

function descargar_plugins_zip_action($actions, $plugin_file, $plugin_data, $context) {
    $actions['download'] = '<a href="' . admin_url('admin-ajax.php?action=descargar_plugins_zip&plugin=' . $plugin_file) . '">Descargar plugin</a>';
    return $actions;
}
add_filter('plugin_action_links', 'descargar_plugins_zip_action', 10, 4);

function descargar_plugins_zip() {
    if (!current_user_can('manage_options')) {
        wp_die('No tienes suficientes permisos.');
    }
    $plugin = $_GET['plugin'];
    $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin);
    $plugin_name = $plugin_data['Name'];
    $plugin_version = $plugin_data['Version'];
    $plugin_folder = dirname($plugin);
    $plugin_zip = $plugin_folder . '-' . $plugin_version . '.zip';
    $zip = new ZipArchive();
    $zip->open($plugin_zip, ZipArchive::CREATE);
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(WP_PLUGIN_DIR . '/' . $plugin_folder), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($files as $file) {
        $file = str_replace('\\', '/', $file);
        if (strrpos($file, '/') !== false && in_array(substr($file, strrpos($file, '/') + 1), array('.', '..'))) {
            continue;
        }
        $file = realpath($file);
        if (is_dir($file) === true) {
            $zip->addEmptyDir(str_replace(WP_PLUGIN_DIR . '/' . $plugin_folder . '/', '', $file . '/'));
        } else if (is_file($file) === true) {
            $zip->addFromString(str_replace(WP_PLUGIN_DIR . '/' . $plugin_folder . '/', '', $file), file_get_contents($file));
        }
    }
    $zip->close();
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename=' . $plugin_zip);
    header('Content-Length: ' . filesize($plugin_zip));
    readfile($plugin_zip);
    unlink($plugin_zip);
    exit;
}
add_action('wp_ajax_descargar_plugins_zip', 'descargar_plugins_zip');

function descargar_todos_plugins_zip() {
    echo '<script type="text/javascript">
        jQuery(document).ready(function($) {
            $("#bulk-action-form").after("<a style=\"display: inline-block; margin-top: 20px; padding: 10px 20px; background: #dc3232; color: #fff; text-decoration: none; border-radius: 3px;\" href=\"' . admin_url('admin-ajax.php?action=descargar_todos_plugins_zip') . '\">DESCARGAR TODOS LOS PLUGINS</a>");
        });
    </script>';
}
add_action('admin_footer-plugins.php', 'descargar_todos_plugins_zip');


function descargar_todos_plugins_zip_action() {
    if (!current_user_can('manage_options')) {
        wp_die('No tienes suficientes permisos.');
    }
    $plugins_folder = WP_PLUGIN_DIR;
    $plugin_zip = 'all-plugins.zip';
    $zip = new ZipArchive();
    $zip->open($plugin_zip, ZipArchive::CREATE);
    $plugins = get_plugins();
    foreach ($plugins as $plugin_path => $plugin_info) {
        $plugin_dir = dirname($plugin_path);
        if ('.' === $plugin_dir) continue; // Skip plugins not in a directory
        $individual_plugin_zip = $plugin_dir . '.zip';
        $individual_zip = new ZipArchive();
        $individual_zip->open($individual_plugin_zip, ZipArchive::CREATE);
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($plugins_folder . '/' . $plugin_dir), RecursiveIteratorIterator::SELF_FIRST);
        foreach ($files as $file) {
            $file = str_replace('\\', '/', $file);
            if (strrpos($file, '/') !== false && in_array(substr($file, strrpos($file, '/') + 1), array('.', '..'))) {
                continue;
            }
            $file = realpath($file);
            if (is_dir($file) === true) {
                $individual_zip->addEmptyDir(str_replace($plugins_folder . '/' . $plugin_dir . '/', '', $file . '/'));
            } else if (is_file($file) === true) {
                $individual_zip->addFromString(str_replace($plugins_folder . '/' . $plugin_dir . '/', '', $file), file_get_contents($file));
            }
        }
        $individual_zip->close();
        $zip->addFile($individual_plugin_zip, $individual_plugin_zip);
    }
    $zip->close();
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename=' . $plugin_zip);
    header('Content-Length: ' . filesize($plugin_zip));
    readfile($plugin_zip);
    array_map('unlink', glob("$plugins_folder/*.zip"));
    unlink($plugin_zip);
    exit;
}
add_action('wp_ajax_descargar_todos_plugins_zip', 'descargar_todos_plugins_zip_action');

Plugin para descargar plugins de una instalación de WordPress

Si lo prefieres puedes descargarte este código pero en plugin, solo tienes que subir el plugin, activarlo y ya tendrás accesible las descargas.

Descargar plugin

¡Más Snippets, Más Opciones!

Al compartir, motivamos a más desarrolladores a contribuir. Ayúdanos a hacer de este directorio un punto de referencia en snippets.

Facebook
Twitter
LinkedIn
Telegram
WhatsApp

¿Necesitas un snippet? Pídenoslo

¿No encuentras el código que necesitas? Pídenoslo y te ayudamos. También puedes publicar tus snippets.

¿Cómo implementar este snippet en la web?

Tienes 2 opciones, una de ellas es mediante plugin y la otra pegando el código en tu web.

1. Añadir snippet con plugin

code-snippets

Code Snippets

Por Code Snippets Pro

  1. Descarga el plugin o búscalo en el repositorio de plugins de Wordpress e instálalo en tu web.
  2. En el menú lateral del Escritorio verás un nuevo enlace (Fragmetos de código). Ves a Fragmentos de código > Añadir nuevo.
  3. Se abrirá una página con un título, bloque de código, descripción y etiquetas, rellena el título con el que quieras guardarlo, ejemplo: Añadir Google Analytics.
  4. En la parte código verás que está activo PHP, ahí pega el código del snippet
  5. La descripción y las etiquetas solo son para tu información y para que luego encuentres más fácil los snippets.
  6. Publicar y activar el snippet.

2. Añadir snippet en el functions.php

Diseño web con WordPress

Accede al archivo functions.php de tu tema o tema hijo, pega el snippet y guarda el archivo.

Lo encontrarás en Apariencia > Editor de archivos de tema, pinchas sobre el enlace  functions.php y pegas el código al final del archivo.

condiciones de uso diseño web

¿Necesitas un snippet?

Cuéntanos que necesitas e intentaremos crear un snippet que lo realice. Si lo conseguimos, lo publicaremos y te avisaremos por correo.

¡Comparte tu snippet!

Si has creado un snippet y quieres compartirlo, envíanoslo y lo publicaremos enlazando tu web debajo de la publicación.

Relacionados:

Enviar contenido a mi correo

Guárdarte el contenido en tu correo para probarlo más tarde.