X

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:

 

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.

 

Categorías: Core
Etiquetas: funcionalidad

Ver comentarios (7)