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

Tabla de contenidos

¿Cómo descargar plugins de WordPress sin FTP?

¿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. Aunque nuestro shortcode facilita la descarga, siempre es recomendable verificar que los plugins provengan del directorio oficial de plugins de WordPress o de desarrolladores de confianza.

¿Cómo funciona este shortcode?

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

¿Para qué sirve este shortcode con plugins personalizados?

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.

¿Es seguro usar este shortcode?

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');

 

Descargar plugins de WordPress sin FTP

  • Shortcode que permite descargar cualquier plugin instalado directamente desde el panel de administración
  • Opción para descargar todos los plugins en un único ZIP comprimido para migrar a otro sitio
  • Evita usar FTP o cPanel al agregar un botón «Descargar» junto a cada plugin
  • Especialmente útil para plugins personalizados o premium no disponibles en el repositorio
  • Acceso restringido solo a administradores del sitio por motivos de seguridad
Imagen de Jose Hilario
Jose Hilario
¡Apasionado del diseño web! Especializado en WordPress, WooCommerce y Elementor PRO. Me encanta diseñar páginas web atractivas y optimizadas para SEO. Mi objetivo: impulsar a las empresas con un diseño web atractivo y funcional.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

18 − catorce =

Categorías
Portfolio de diseño web en WordPress

¿Necesitas una web? Contacta con nosotros.

Relacionados: