Cargar archivos de WordPress mediante programación: 3 formas prácticas

Publicado: 2022-10-20

De forma predeterminada, WordPress admite la carga de archivos a través de su biblioteca de medios o la pantalla de edición posterior. Cuando carga archivos en su sitio web utilizando estas funciones integradas, WordPress se encarga de todo por usted. Le permite ver todos los archivos cargados e insertarlos en sus publicaciones o páginas.

Sin embargo, necesita más que eso cuando se trata de funcionalidades personalizadas, como la carga de archivos de interfaz. Hay muchos complementos disponibles que lo ayudan a agregar, modificar y administrar sus archivos sin ajustar el código. Por supuesto, la mayoría de ellos requieren una tarifa.

Si no desea pagar por los complementos, la carga de archivos mediante programación en su sitio de WordPress puede ser una solución. En este artículo, lo guiaremos sobre cómo lograrlo en detalle.

¡Empecemos!

  • Un pequeño aviso
  • #1 Cargar archivos a la biblioteca de medios mediante programación desde URL
  • #2 Agregar archivos a través de un formulario HTML
  • #3 Insertar archivos en la galería personalizada mediante programación
  • Consejo adicional: Proteja sus cargas de archivos

Un pequeño aviso

Este método interfiere principalmente con el código. Por lo tanto, opte por esta técnica solo si tiene algún conocimiento de codificación. De lo contrario, todo su sitio puede colapsar con solo un pequeño cambio inadecuado.

En caso de que recién haya comenzado con WordPress, le recomendamos encarecidamente el complemento Gravity Forms para aceptar cargas de archivos frontend. O consulte los 5 complementos principales para cargar archivos de interfaz de WordPress. También puede usar un cliente FTP para cargar archivos desde el backend.

Aún así, ¿quieres aprender a cargar archivos mediante programación en WordPress? ¡Sigue leyendo!

#1 Cargar archivos a la biblioteca de medios mediante programación desde URL

Navega por Internet y encuentra excelentes imágenes que desea cargar en su biblioteca multimedia de WordPress. Esta es la ruta para hacerlo:

  1. Copie la URL de la imagen.
  2. Incruste el siguiente código en su sitio e inserte la URL que ha copiado:
 /**
* Cargar imagen desde URL programáticamente
*
* @autor Misha Rudrastyh
* @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
función rudr_upload_file_by_url ($ imagen_url) {

// nos permite usar las funciones download_url() y wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// descargar al directorio temporal

$temp_file = descargar_url ($image_url);

if( es_wp_error( $temp_file ) ) {
falso retorno;
}

// mover el archivo temporal al directorio de subidas
$archivo = matriz(
'nombre' => nombre base ($imagen_url),
'tipo' => mime_content_type ($ archivo_temp),
'tmp_name' => $archivo_temp,
'tamaño' => tamaño de archivo ($ archivo_temp),
);
$carga lateral = wp_handle_sideload(
$archivo,
formación(
'test_form' => falso // no es necesario verificar el parámetro 'acción'
)
);

if( ! vacío( $carga lateral[ 'error' ] ) ) {
// puede devolver un mensaje de error si lo desea
falso retorno;
}

// es hora de agregar nuestra imagen cargada a la biblioteca de medios de WordPress
$adjunto_id = wp_insert_attachment(
formación(
'guid' => $carga lateral[ 'url' ],
'post_mime_type' => $carga lateral[ 'tipo' ],
'post_title' => nombre base ($ sideload [ 'archivo']),
'post_contenido' => '',
'post_status' => 'heredar',
),
$carga adicional[ 'archivo' ]
);

if( is_wp_error( $adjunto_id ) || ! $adjunto_id ) {
falso retorno;
}

// actualizar metadatos, regenerar tamaños de imagen
require_once( ABSPATH . 'wp-admin/includes/image.php' );

wp_update_attachment_metadata(
$adjunto_id,
wp_generate_attachment_metadata ($attachment_id, $sideload[ 'file' ] )
);

devuelve $adjunto_id;
}

¡Eso es todo!

#2 Agregar archivos a través de un formulario HTML

El segundo método es crear un formulario HTML simple con entrada de archivo y botón de envío. Puede colocar este formulario en cualquier página o publicación, lo que permite a los usuarios cargar archivos en su sitio. Realice los siguientes pasos para cargar archivos mediante programación en WordPress a través de un formulario HTML:

  1. Incruste el siguiente código para crear un formulario HTML simple:
 1 <h2>Subir un archivo</h2>
2 <form method="post" enctype="multipart/form-data">
3 <tipo de entrada="archivo" nombre="archivo" requerido />
4 <input type="submit" name="upload_file" value="Subir" />
5 </formulario>

Al usar la función wp_upload_bits() , WordPress almacenará automáticamente sus archivos cargados dentro del directorio de carga . Puede encontrar sus archivos dentro de la carpeta año-mes actual, por ejemplo, wp-content/uploads/2020->03->your_file .

2. Inserta este código en tu archivo functions.php :

 1 <?php
2 función fn_upload_file() {
3 if ( isset($_POST['upload_file']) ) {
4 $subir = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
5 // guardar en la base de datos $subir['url]
6 }
7 }
8 add_action('init', 'fn_upload_file');

Si imprime la variable $upload , obtendrá una matriz que contiene el directorio y las URL de los archivos cargados. Los usuarios pueden encontrar y guardar estas URL en la base de datos usando $upload['url] .

Como se mencionó anteriormente, una vez que use el método wp_upload_bits() , sus archivos se almacenarán en la jerarquía de carpetas predeterminada de WordPress. Pero, ¿qué sucede si desea guardar archivos dentro de su propio directorio?

En esa situación, debe crear una carpeta personalizada en el directorio de carga y mover los archivos a ella. Supongamos que desea almacenar sus archivos dentro del directorio uploads/product-images . Con el siguiente código, puede generar la carpeta de imágenes del producto y almacenar archivos dentro de ella.

Escribe el código en el archivo functions.php :

 1 función fn_upload_file() {
2 if ( isset($_POST['upload_file']) ) {
3 $subir_dir = wp_upload_dir();
4
5 if ( ! vacío( $upload_dir['basedir'] ) ) {
6 $user_dirname = $upload_dir['basedir'].'/product-images';
7 if ( ! file_exists( $user_dirname ) ) {
8 wp_mkdir_p ($ usuario_dirname);
9 }
10
11 $nombre_archivo = wp_unique_filename( $nombre_directorio_usuario, $_ARCHIVOS['archivo']['nombre'] );
12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
13 // guardar en la base de datos $upload_dir['baseurl'].'/product-images/'.$filename;
14 }
15 }
dieciséis }
17 add_action('init', 'fn_upload_file');

Aquí, estamos aplicando la técnica wp_unique_filename() para dar un nombre de archivo único al directorio dado.

#3 Insertar archivos en la galería personalizada mediante programación

Supongamos que tiene una galería agregada como un metacampo personalizado llamado "galería". Cargas muchas imágenes a través de media_sideload_image() . Luego, serialice sus ID e insértelos en la galería mediante update_post_meta ($ post_id, 'gallery', $ serialized) ;

En consecuencia, cuando miras la publicación en la página Editar publicación del backend, verás todas las fotos cargadas. Sin embargo, estas imágenes no se mostrarán en una presentación de diapositivas en el frontend hasta que presione Actualizar en el backend.

Entonces, ¿cómo puede hacer clic programáticamente en el botón Actualizar después de haber creado la galería? Simplemente siga la guía a continuación:

  1. Una vez que actualice la galería de publicaciones, agregue este código para seleccionar mediante programación el botón Actualizar :
 wp_update_post(['ID'=>$post_id]);

2. Actualice el caché para usar las funciones de búsqueda y filtro:

 do_action('search_filter_update_post_cache', $post_id);

Consejo adicional: Proteja sus cargas de archivos

¿Hay alguna forma de evitar el acceso no autorizado a los archivos cargados? La respuesta es sí. Para obtener más información, consulte nuestra guía detallada sobre 21 trucos útiles de .htaccess para proteger los archivos de WordPress. Dado que .htaccess es un archivo crítico que mantiene su sitio funcionando sin problemas, tenga cuidado al realizar cualquier cambio.

Por otro lado, instale el complemento PDA Gold si no confía en sus habilidades de codificación. Le ayudará a manejar la molestia sin preocuparse por afectar el archivo .htaccess.

Otro método que vale la pena considerar es proteger con contraseña sus archivos de WordPress. Consulte nuestro artículo para obtener más detalles.

¡Cargue archivos mediante programación en WordPress como un experto!

Le mostramos 3 formas de cargar archivos mediante programación en WordPress. Ahora, puede cargar archivos sin esfuerzo a la biblioteca de medios o a través de un formulario de carga de archivos de interfaz HTML. También se puede agregar archivos a su galería personalizada. Y lo más importante, no olvides proteger tus archivos de WordPress usando código o instalando complementos.

Se trata de cómo cargar archivos mediante programación en WordPress. ¿Conoces otros métodos? Por favor, comparta con nosotros en la sección de comentarios a continuación.