Încărcați fișierul WordPress în mod programatic: 3 moduri practice

Publicat: 2022-10-20

În mod implicit, WordPress acceptă încărcarea fișierelor prin biblioteca sa media sau prin ecranul de editare post. Când încărcați fișiere pe site-ul dvs. folosind aceste funcții încorporate, WordPress se ocupă de totul pentru dvs. Vă permite să vizualizați toate fișierele încărcate și să le inserați în postările sau paginile dvs.

Cu toate acestea, aveți nevoie de mai mult decât atât atunci când vine vorba de funcționalități personalizate, cum ar fi încărcările de fișiere frontend. Există o mulțime de pluginuri disponibile care vă ajută să adăugați, modificați și gestionați fișierele fără a ajusta codul. Desigur, majoritatea necesită o taxă.

Dacă nu doriți să plătiți pentru pluginuri, încărcarea fișierelor în mod programatic pe site-ul dvs. WordPress poate fi o soluție. În acest articol, vă vom ghida în detaliu cum să realizați acest lucru.

Să începem!

  • O mică notificare
  • # 1 Încărcați fișiere în biblioteca media în mod programatic de la adrese URL
  • # 2 Adăugați fișiere printr-un formular HTML
  • # 3 Inserați fișiere în galeria personalizată în mod programatic
  • Sfat bonus: Protejați-vă fișierele încărcate

O mică notificare

Această metodă interferează în principal cu codul. Deci, vă rugăm să vă înscrieți la această tehnică numai dacă aveți cunoștințe de codificare. În caz contrar, întregul site se poate prăbuși doar cu o singură modificare necorespunzătoare.

În cazul în care tocmai ați început cu WordPress, vă recomandăm cu căldură pluginul Gravity Forms pentru a accepta încărcările de fișiere de tip frontend. Sau, consultați primele 5 plugin-uri pentru încărcarea fișierelor frontend din WordPress. De asemenea, puteți utiliza un client FTP pentru a încărca fișiere din backend.

Totuși, vrei să înveți cum să încarci fișiere programatic în WordPress? Continua să citești!

# 1 Încărcați fișiere în biblioteca media în mod programatic de la adrese URL

Navigați pe internet și găsiți imagini grozave pe care doriți să le încărcați în biblioteca dvs. media WordPress. Iată traseul pentru a face acest lucru:

  1. Copiați adresa URL a imaginii.
  2. Încorporați codul de mai jos pe site-ul dvs. și introduceți adresa URL pe care ați copiat-o:
 /**
* Încărcați imaginea de la URL în mod programatic
*
* @autor Misha Rudrastyh
* @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url
*/
funcția rudr_upload_file_by_url( $image_url ) {

// ne permite să folosim funcțiile download_url() și wp_handle_sideload().
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// descărcare în dir temp

$temp_file = download_url( $image_url );

if( is_wp_error( $temp_file ) ) {
returnează fals;
}

// mutați fișierul temporar în directorul de încărcări
$fisier = matrice(
'nume' => nume de bază ($image_url),
'type' => mime_content_type( $temp_file ),
'tmp_name' => $temp_file,
'size' => dimensiunea fișierului ($temp_file),
);
$sideload = wp_handle_sideload(
$file,
matrice(
'test_form' => false // nu este nevoie să verificați parametrul 'action'
)
);

dacă(! gol( $sideload[ 'eroare' ] ) ) {
// puteți returna un mesaj de eroare dacă doriți
returnează fals;
}

// este timpul să adăugăm imaginea încărcată în biblioteca media WordPress
$attachment_id = wp_insert_attachment(
matrice(
'guid' => $sideload[ 'url' ],
'post_mime_type' => $sideload[ 'tip'],
'post_title' => nume de bază( $sideload[ 'fișier' ] ),
'post_content' => ''',
'post_status' => 'moștenește',
),
$sideload[ 'fișier']
);

if( is_wp_error( $attachment_id ) || ! $attachment_id ) {
returnează fals;
}

// actualizează metadatele, regenerează dimensiunile imaginii
require_once( ABSPATH . 'wp-admin/includes/image.php' );

wp_update_attachment_metadata(
$attachment_id,
wp_generate_attachment_metadata( $attachment_id, $sideload[ 'fișier'] )
);

returnează $attachment_id;
}

Asta e!

# 2 Adăugați fișiere printr-un formular HTML

A doua metodă este de a crea un formular HTML simplu cu introducerea fișierului și butonul de trimitere. Puteți plasa acest formular pe orice pagină sau postare, ceea ce permite utilizatorilor să încarce fișiere pe site-ul dvs. Urmați următorii pași pentru a încărca fișiere în mod programatic în WordPress printr-un formular HTML:

  1. Încorporați următorul cod pentru a construi un formular HTML simplu:
 1 <h2>Încărcați un fișier</h2>
2 <form method="post" enctype="multipart/form-data">
3 <input type="file" name="file" required />
4 <input type="submit" name="upload_file" value="Upload" />
5 </form>

Utilizând funcția wp_upload_bits() , WordPress va stoca automat fișierele încărcate în directorul de încărcări . Puteți găsi fișierele dvs. în folderul an-lună curent, de exemplu, wp-content/uploads/2020->03->your_file .

2. Introduceți acest cod în fișierul functions.php :

 1 <?php
2 funcția fn_upload_file() {
3 dacă ( isset($_POST['upload_file']) ) {
4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']);
5 // salvează în baza de date $upload['url]
6}
7}
8 add_action('init', 'fn_upload_file');

Dacă imprimați variabila $upload , veți obține o matrice care conține directorul și adresele URL ale fișierelor încărcate. Utilizatorii pot găsi și salva aceste adrese URL în baza de date folosind $upload['url] .

După cum sa menționat mai sus, odată ce ați folosit metoda wp_upload_bits() , fișierele dvs. vor fi stocate în ierarhia implicită a folderelor WordPress. Dar dacă doriți să salvați fișiere în propriul director?

În această situație, ar trebui să creați un folder personalizat în directorul de încărcări și să mutați fișierele în el. Să presupunem că doriți să stocați fișierele în directorul încărcări/imagini-produs . Cu codul de mai jos, puteți genera folderul de imagini ale produsului și puteți stoca fișiere în interiorul acestuia.

Scrieți codul în fișierul functions.php :

 1 funcție fn_upload_file() {
2 dacă ( isset($_POST['upload_file']) ) {
3 $upload_dir = wp_upload_dir();
4
5 dacă ( ! empty( $upload_dir['basedir'] ) ) {
6 $user_dirname = $upload_dir['basedir'].'/product-images';
7 dacă ( ! fișier_există( $nume_dir_utilizator ) ) {
8 wp_mkdir_p( $nume_dir_utilizator);
9}
10
11 $filename = wp_unique_filename( $user_dirname, $_FILES['file']['name'] );
12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename);
13 // salvează în baza de date $upload_dir['baseurl'].'/product-images/'.$filename;
14}
15}
16}
17 add_action('init', 'fn_upload_file');

Aici, aplicăm tehnica wp_unique_filename() pentru a da un nume de fișier unic directorului dat.

# 3 Inserați fișiere în galeria personalizată în mod programatic

Să presupunem că aveți o galerie adăugată ca meta câmp personalizat numit „galerie”. Încărcați o mulțime de imagini prin media_sideload_image() . Apoi, serializează-le ID-urile și inserează-le în galerie prin update_post_meta( $post_id , 'gallery', $serialized) ;

În consecință, când te uiți la postarea din pagina de backend Editează postarea , vei vedea toate fotografiile încărcate. Cu toate acestea, aceste imagini nu se vor afișa într-o prezentare de diapozitive în interfață până când nu apăsați Actualizare în backend.

Deci, cum puteți face clic pe butonul Actualizare după ce ați creat galeria? Pur și simplu urmați ghidul de mai jos:

  1. După ce actualizați galeria de postări, adăugați acest cod pentru a selecta în mod programatic butonul Actualizare :
 wp_update_post(['ID'=>$post_id]);

2. Actualizați memoria cache pentru a utiliza funcțiile de căutare și filtrare:

 do_action('search_filter_update_post_cache', $post_id);

Sfat bonus: Protejați-vă fișierele încărcate

Există modalități de a preveni accesul neautorizat la fișierele încărcate? Raspunsul este da. Pentru mai multe informații, consultați ghidul nostru detaliat despre 21 de trucuri utile .htaccess pentru a securiza fișierele WordPress. Deoarece .htaccess este un fișier esențial care vă menține site-ul să funcționeze fără probleme, fiți precaut când faceți modificări.

Pe de altă parte, instalați pluginul PDA Gold dacă nu aveți încredere în abilitățile dvs. de codare. Vă va ajuta să faceți față problemei fără să vă faceți griji cu privire la afectarea fișierului .htaccess.

O altă metodă care merită luată în considerare este să vă protejați cu parolă fișierele WordPress. Consultați articolul nostru pentru mai multe detalii.

Încărcați fișiere în mod programatic în WordPress ca un expert!

V-am arătat 3 moduri de a încărca fișiere în mod programatic în WordPress. Acum, puteți încărca fără efort fișiere în biblioteca media sau printr-un formular HTML de încărcare a fișierelor frontend. De asemenea, este posibil să adăugați fișiere în galeria personalizată. Și cel mai important, nu uitați să vă protejați fișierele WordPress fie folosind cod, fie instalând pluginuri.

Totul este despre cum să încarci fișiere în mod programatic în WordPress. Cunoașteți alte metode? Vă rugăm să ne împărtășiți în secțiunea de comentarii de mai jos.