J'ai le script dans mon functions.php qui cherche à localiser le répertoire de médias du site dans lequel le thème est installé. C'est assez simple, sauf si le site est un site MU. Dans ce cas, le répertoire multimédia est basé sur le blog_id.
Cependant, mon code ci-dessous renvoie l'id du site principal plutôt que le blog_id du site sur lequel il est exécuté ...
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/';
Dans ce cas, blog_id est 3, mais renvoie une valeur de 1 pour $ current_site-> blog_id.
L'erreur est ...
cannot open wp-content/blogs.dir/1/files/
Comparez $current_site->id
avec $current_site->blog_id
. Selon la documentation en ligne, blog_id
devrait fonctionner ... mais vérifiez s'il y a une différence majeure (votre système peut avoir un plug-in ou quelque chose qui cause un problème).
Il semble que $current_site
soit une variable globale définie par votre site ou réseau et retournera toujours le même blog_id
que votre tableau de bord réseau - dans ce cas, "1."
Ce que vous devez utiliser à la place est $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/';
Cela devrait vous donner la bonne information.
Un autre piège est votre /wp-content/
codé en dur. Utilisez WP_CONTENT_DIR
pour accéder aux fichiers et WP_CONTENT_URL
pour les requêtes HTTP ou encore mieux wp_upload_dir()
pour les deux. J'ai quelques installations en cours d'exécution où wp-content est sur un autre domaine et dans un chemin en dehors du répertoire WordPress.
Ainsi, même si vous obtenez le blogi_id
correct, vous risquez de ne pas trouver les fichiers. :)
Mettre à jour
Mon petit plugin de débogage Afficher les infos de téléchargement peut donner des indices. Mais les résultats de is_dir()
ne sont pas fiables, malheureusement.