Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Subir archivos en WordPress a través de código

En un artículo anterior habíamos visto como usar el Media Uploader de WordPress para subir archivos, sin embargo en este artículo veremos una manera alterna a través de código que nos permita personalizar la subida de archivos en WordPress.

 

Resultado Final

Al final lo que queremos obtener será algo similar a la siguiente imagen, en donde se muestra un formulario de subida de archivos:

Subida de archivos personalizada en WordPress

 

Código para subir archivos a WordPress

El siguiente código es parte del código de un plugin de ejemplo, te creará una nueva opción de menú bajo el menú de Herramientas y sirve como código base para la subida de archivos en WordPress usando PHP y funciones de WordPress.

<?php
/*
Plugin Name: Upload custom file
Plugin URI: https://decodecms.com
description: Demo plugin for uploading files with PHP
Version: 1.0
Author: Jhon Marreros
Author URI: https://decodecms.com
License: GPL2
*/

// Show Form
add_action( 'admin_menu', 'register_media_selector_settings_page' );

function register_media_selector_settings_page() {
        add_submenu_page( 'tools.php', 'Upload File', 'Upload File', 'manage_options', 'upload-file', 'dcms_upload_file_settings_callback' );
}

function dcms_upload_file_settings_callback() {
        ?>
        <div class="wrap">
                <h1>Ejemplo de subida de archivo</h1>
                <br>
                <form enctype="multipart/form-data" method="post">
                        Selecciona algún archivo: <input name="upload-file" type="file" /> <hr>
                        <input type="submit" value="Enviar archivo" />
                </form>
        </div>
        <?php

        if(isset($_FILES['upload-file'])) {
                global $wp_filesystem;
                WP_Filesystem();

                $name_file = $_FILES['upload-file']['name'];
                $tmp_name = $_FILES['upload-file']['tmp_name'];
                $allow_extensions = ['xls', 'xlsx', 'csv'];

                // File type validation
                $path_parts = pathinfo($name_file);
                $ext = $path_parts['extension'];

                if ( ! in_array($ext, $allow_extensions) ) {
                        echo "Error - File type not allowed";
                        return;
                }

                $content_directory = $wp_filesystem->wp_content_dir() . 'uploads/archivos-subidos/';
                $wp_filesystem->mkdir( $content_directory );

                if( move_uploaded_file( $tmp_name, $content_directory . $name_file ) ) {
                        echo "File was successfully uploaded";
                } else {
                        echo "The file was not uploaded";
                }
        }
}

En el código anterior:

  • Todo el contenido se mostrará bajo la página que carga el enlace de menú creado
  • Creamos un formulario de subida de archivos con HTML
  • Verificamos si se envía un Post para procesar la subida de archivos
  • Recuperamos el nombre del archivo y nombre temporal
  • Validamos la extensión del archivo
  • Movemos el archivo temporal a la ubicación final
  • Comprobamos si hay errores o si se realizó correctamente

 

Puedes descargar el plugin desde el repositorio de GitHub: Upload-Custom-File-WordPress

 

Conclusión

La subida de archivos directamente con PHP puede que no sea tan visual, sin embargo te puede servir de base para construir algo más complejo en tus temas y plugins personalizados.

 
¿Aún con dudas?, en el siguiente video se explica más detalladamente.

Suscríbete a DecodeCMS:  

 

La entrada Subir archivos en WordPress a través de código es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires