Errore nell'ottenere il blog_id corretto su MU da functions.php
Ho uno script nel mio functions.php che cerca di individuare la directory dei media del sito in cui è installato il tema. Questo è abbastanza semplice a meno che il sito non sia un sito MU. In quel caso, la directory dei media si basa sul blog_id.
Tuttavia, il mio codice qui sotto restituisce l'id del sito principale anziché il blog_id del sito in cui viene eseguito...
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/';
In questo caso, il blog_id effettivo è 3, tuttavia, restituisce un valore di 1 per $current_site->blog_id
L'errore è...
cannot open wp-content/blogs.dir/1/files/

Confronta $current_site->id
con $current_site->blog_id
. Secondo la documentazione in linea, blog_id
dovrebbe funzionare... ma controlla se c'è una differenza significativa (il tuo sistema potrebbe avere un plugin o qualcos'altro che causa un problema).
Aggiornamento - Ignora l'ultimo
Sembra che $current_site
sia una variabile globale definita dal tuo sito o rete e restituirà sempre lo stesso blog_id
del tuo pannello di controllo della rete - in questo caso, "1".
Ciò che devi usare invece è $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/';
Questo dovrebbe fornirti le informazioni corrette.

Un altro problema è l'uso del percorso fisso /wp-content/
nel codice.
Utilizza WP_CONTENT_DIR
per l'accesso ai file e WP_CONTENT_URL
per le richieste HTTP, o ancora meglio wp_upload_dir()
per entrambi. Ho alcune installazioni dove wp-content si trova su un altro dominio e in un percorso esterno alla directory di WordPress.
Quindi, anche se ottieni il corretto blogi_id
, potresti non trovare i file. :)
Aggiornamento
Il mio piccolo plugin di debug Mostra Info Upload potrebbe fornire alcuni indizi. Purtroppo, però, i risultati di is_dir()
non sono affidabili.

potrebbe essere la soluzione. Sto scoprendo che WPMU non crea la directory finché non viene caricato qualcosa. Quindi, il mio controllo genera un errore in quel caso. Qual è l'output di wp_upload_dir() in quel caso?
