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

Tabla de contenidos

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

 

Picture of 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 *

Relacionados: