Schimbă calea și URL-ul de încărcare WordPress

3 apr. 2016, 19:31:26
Vizualizări: 31.5K
Voturi: 6

Pentru o instalare nouă, vreau să mut folderul de încărcare într-un subdomeniu (presupus a accelera descărcarea). Subdomeniul meu face legătura cu un folder numit static. Deci am:

  • Home
    • wp
      • wp-admin
      • wp-content
      • wp-include
    • static

Acum trebuie să spun WordPress-ului unde este folderul de încărcare și să-i definesc URL-ul. Codex-ul spune că ar trebui să editez wp-config pentru a defini UPLOADS relativ la ABSPAHT. Dar dacă pun define( 'UPLOADS', '../static' );, bineînțeles că URL-urile în pagini apar ca //mydomain.tld/wp/../static/image.jpg

Am căutat prin diverse surse și am găsit multe răspunsuri diferite la această problemă (filtre, editare DB,...), unele dintre ele nemai fiind valabile (de când pagina de setări media nu mai permite schimbarea folderului de încărcare), iar altele evident greșite... Vreau să o fac în modul corect.

Am accesat pagina wp-admin/options.php și am setat upload_path = ../static și upload_url_path = http://static.mydomain.tld și pare să funcționeze.

Dar asta este modalitatea corectă de a face acest lucru? Și dacă dezvoltatorii au eliminat aceste opțiuni din pagina de setări media, nu există riscul ca această funcționalitate să fie complet eliminată mai târziu?

2
Comentarii

Orice spune codex-ul este modul corect de a face lucrurile. Dacă acest lucru nu se potrivește nevoilor tale, atunci orice soluție pe care o găsești este o soluție alternativă, și nu există soluții alternative corecte sau greșite. Deci, dacă funcționează pentru tine momentan, folosește-o și doar urmărește eventualele schimbări/actualizări.

ed-ta ed-ta
3 apr. 2016 19:41:05

Sigur, dar acea pagină din codex se referă doar la upload_path, nu și la upload_URL. Și acea pagină este doar despre editarea wp-config, plus că întreaga secțiune are o declarație de responsabilitate "Următoarele secțiuni pot conține informații avansate / nesuportate", ceea ce mă face să mă întreb.

Mat Mat
3 apr. 2016 19:50:34
Toate răspunsurile la întrebare 3
8

Am accesat pagina wp-admin/options.php și am setat... Dar așa ar trebui făcut?

Nu. Nu ar trebui să modifici niciodată fișierele de nucleu WordPress deoarece toate modificările tale vor fi pierdute la următoarea actualizare. Ar trebui să folosești acțiuni și filtre în loc:

add_filter( 'pre_option_upload_path', function( $upload_path ) {
    return '/calea/catre/static';
});

add_filter( 'pre_option_upload_url_path', function( $upload_url_path ) {
    return 'http://static.exemplu.org';
});
3 apr. 2016 19:59:27
Comentarii

Nu, nu, există o neînțelegere aici. Bineînțeles că nu aș edita niciodată un fișier WordPress. Voiam să spun că am încărcat pagina wp-admin/options.php în browser, am modificat setările afișate și am dat click pe salvare. Acum, pentru filtrele tale, înțeleg cum funcționează, dar de unde sunt obținute valorile fără filtru? Există vreo posibilitate ca acestea să fie setările pe care le-am modificat?

Mat Mat
3 apr. 2016 20:08:45

Am înțeles, îmi cer scuze că am presupus că ai editat un fișier de bază. Acelea sunt exact valorile pe care le-ai modificat, iar filtrul pre_option_* pur și simplu filtrează toate apelurile get_option() pentru acele valori, deci abordarea ta va funcționa și ea. Referitor la viitor, mă îndoiesc că aceste opțiuni vor fi vreodată eliminate din nucleu fără a oferi compatibilitate retroactivă.

kovshenin kovshenin
3 apr. 2016 20:20:16

OK, deci practic ambele soluții sunt similare în sensul că a mea definește noi valori ale opțiunilor (presupun că în baza de date), în timp ce a ta le modifică pe parcurs, corect? Deci cred că aceasta, împreună cu comentariul tău referitor la evoluțiile viitoare, înseamnă că soluția mea este corectă. Mulțumesc pentru ajutor.

Mat Mat
3 apr. 2016 20:31:46

Cu plăcere! Corect, dar doar pentru a clarifica, ambele valori sunt deja definite în baza de date, tu doar le modifici din interfața options.php. De asemenea, nu aș folosi căi relative pentru că uneori sunt impredictibile.

kovshenin kovshenin
3 apr. 2016 20:38:16

Tocmai am verificat în alte două instale pe care le am. Atât upload_path cât și upload_url_path există în baza de date dar sunt goale, așa că presupun că există o valoare implicită definită undeva. În ceea ce privește calea relativă, asta a fost din cauza indiciului din codex pe care l-am menționat în postarea inițială. Voi seta o cale absolută atunci, sper să nu stric site-ul :-)

Mat Mat
3 apr. 2016 20:46:43

Ai dreptate, cu valori goale, valorile implicite sunt generate în wp_upload_dir: https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-includes/functions.php#L1816

kovshenin kovshenin
3 apr. 2016 20:49:34

Nu funcționează pe WP 4.7.2

Jeremy Jeremy
8 mar. 2017 19:50:07

Tocmai am votat pentru comentariul lui @kovshenin despre calea relativă. Am verificat valorile cu add_filter('upload_dir', function( $args ){ var_dump($args); });, rezultatele includ ceva ciudat precum /home/foo/bar/wordpress/../uploads/. Așa că am folosit calea absolută pentru câmpul upload_path în pagina option.php.

norixxx norixxx
26 oct. 2018 12:16:55
Arată celelalte 3 comentarii
0

Am avut o problemă similară cu maparea subdomeniului media. Am întrebat și am primit răspuns aici.
Pe scurt, adăugați în functions.php următoarele:

update_option('upload_url_path', '/wp-content/uploads');
20 dec. 2018 10:06:57
0

Dacă, din orice motiv, nu doriți să setați opțiunile pentru calea de încărcare în baza de date sau în fișierul functions.php, puteți totuși seta filtrele de opțiuni în wp-config.php astfel (înainte de a apela orice fișier din nucleul WordPress):

$GLOBALS['wp_filter']['pre_option_upload_path'][10][] = array(
  'function' => function( $upload_path ){
    return '/calea/catre/static';
  },
  'accepted_args' => 1,
);

$GLOBALS['wp_filter']['pre_option_upload_url_path'][10][] = array(
  'function' => function( $upload_url_path ){
    return 'http://static.exemplu.org';
  },
  'accepted_args' => 1,
);

WP_Hook::build_preinitialized_hooks va actualiza corespunzător aceste elemente de matrice în formatul intern folosit efectiv.

26 mar. 2020 13:41:11