Eroare la obținerea blog_id corect pe MU din functions.php
Am un script în functions.php care încercă să localizeze directorul media al site-ului în care este instalată tema. Acest lucru este destul de simplu, cu excepția cazului în care site-ul este un site MU. În acest caz, directorul media se bazează pe blog_id.
Totuși, codul meu de mai jos returnează id-ul site-ului principal în loc de blog_id-ul site-ului în care rulează...
function get_image_list()
{
global $current_site;
$dir=is_multisite() ? 'wp-content/blogs.dir/'.$current_site->blog_id.'/files/' : 'wp-content/uploads/';
$url=is_multisite() ? get_bloginfo('url').'/wp-content/blogs.dir/'.$current_site->blog_id.'/files/' : get_bloginfo('url').'/wp-content/uploads/';
În acest caz, blog_id-ul real este 3, dar returnează valoarea 1 pentru $current_site->blog_id
Eroarea este...
cannot open wp-content/blogs.dir/1/files/

Compară $current_site->id
cu $current_site->blog_id
. Conform documentației în linie, blog_id
ar trebui să funcționeze... dar verifică dacă există o diferență majoră acolo (sistemul tău ar putea avea un plugin sau altceva care cauzează o problemă).
Actualizare - Ignoră ultimul
Se pare că $current_site
este o variabilă globală definită de site-ul sau rețeaua ta și va întoarce întotdeauna același blog_id
ca și panoul de control al rețelei - în acest caz, "1".
Ceea ce trebuie să folosești în schimb este $current_blog
:
function get_image_list() {
global $current_blog;
$dir=is_multisite() ? 'wp-content/blogs.dir/'.$current_blog->blog_id.'/files/' : 'wp-content/uploads/';
$url=is_multisite() ? get_bloginfo('url').'/wp-content/blogs.dir/'.$current_blog->blog_id.'/files/' : get_bloginfo('url').'/wp-content/uploads/';
Asta ar trebui să-ți ofere informația corectă.

Un alt obstacol este utilizarea codificată direct a /wp-content/
.
Folosește WP_CONTENT_DIR
pentru accesul la fișiere și WP_CONTENT_URL
pentru cererile HTTP sau, mai bine, wp_upload_dir()
pentru ambele. Am unele instalări unde wp-content este pe alt domeniu și într-o cale în afara directorului WordPress.
Deci, chiar dacă obții blogi_id
corect, s-ar putea să nu găsești fișierele. :)
Actualizare
Micul meu plugin de depanare Show Upload Info poate oferi câteva indicii. Dar rezultatele is_dir()
nu sunt de încredere, din păcate.

asta ar putea fi soluția. Am observat că WPMU nu creează directorul până când nu se încarcă ceva pentru prima dată. Prin urmare, verificarea mea generează o eroare în acest caz. Care este rezultatul funcției wp_upload_dir() în acest caz?
