wp_handle_upload() - cum să încarci într-un subdirector personalizat în uploads
wp_handle_upload() funcționează pentru mine, dar încarcă fișierele acolo unde vrea (uploads/an/lună).
Întrebare: Există vreo metodă de a-i spune să încarce fișierele într-un director personalizat (uploads/directorulmeu)? Sau există vreo altă funcție care ar putea face asta?
Ce am încercat:
move_uploaded_file() din PHP (nu am reușit să înțeleg parametrul pentru directorul țintă - acest lucru este pentru un plugin și trebuie să funcționeze pentru toți, indiferent de structura directorilor).
Am inserat acest cod în fișierul principal al pluginului meu. Nu s-a întâmplat nimic. Dar în comentarii văd că pentru alții pare să funcționeze.
TE ROG, dacă ai un răspuns, oferă-l complet. Pot obține $_FILES['fisierulmeu']. Ce pași trebuie să urmez de aici pentru a muta acel fișier în uploads/directorulmeu?

Puteți lucra la ideea oferită de Joost și utiliza filtrul upload_dir
pentru a seta temporar calea de încărcare într-o altă locație.
/**
* Suprascrie calea implicită de încărcare.
*
* @param array $dir
* @return array
*/
function wpse_141088_upload_dir( $dir ) {
return array(
'path' => $dir['basedir'] . '/mycustomdir',
'url' => $dir['baseurl'] . '/mycustomdir',
'subdir' => '/mycustomdir',
) + $dir;
}
În practică, este la fel de simplu ca:
// Înregistrăm suprascrierea căii.
add_filter( 'upload_dir', 'wpse_141088_upload_dir' );
// Facem operațiunea. WordPress va muta fișierul în 'uploads/mycustomdir'.
$result = wp_handle_upload( $_FILE['myfile'] );
// Resetăm totul la normal.
remove_filter( 'upload_dir', 'wpse_141088_upload_dir' );

Mulțumesc mult pentru îndrumare. Acest lucru aproape funcționează, dar acum primesc: "Nu se poate crea directorul wp-content/uploads/mycustomdir. Directorul părinte este accesibil pentru scriere de către server?". Pentru mine, pare evident că directorul părinte este accesibil pentru scriere, deoarece încărcările acolo funcționează fără probleme.

Încercând să rezolv problema de mai sus, am încercat să creez mycustomdir la activarea pluginului, folosind acest fragment de cod: http://www.wpmayor.com/code-snippet-to-create-a-directory-within-uploads-folder/ Rezultat: pe localhost funcționează (la fel ca și codul tău) - dar pe serverul de producție apare mesajul: "Pluginul a generat 233 de caractere de ieșire neașteptată în timpul activării. Dacă observați mesaje 'headers already sent', probleme cu fluxurile de sincronizare sau alte probleme, încercați dezactivarea sau eliminarea acestui plugin."
