web-dev-qa-db-fra.com

comment obtenir le chemin d'accès aux images dans le dossier de téléchargement à utiliser dans un plugin

J'ai un dossier avec des images dans /wp-content/uploads. J'ai aussi un fichier plugin dans /wp-content/plugins. Je veux récupérer les images stockées dans /wp-content/uploads et les utiliser dans le fichier plugin.

J'ai essayé

echo'<img src="../../USER_PHOTOS/ronny'" href="#"></img>';

quelqu'un peut-il me montrer comment obtenir le chemin d'accès à ces images? Merci.

5
Ronny

Si je ne me trompe pas, vous pouvez essayer la fonction wp_uploads_dir , comme suit:

$uploads = wp_upload_dir(); 

echo '<img src="' . esc_url( $uploads['baseurl'] . '/USER_PHOTOS/ronny/' ) . '" href="#">';
7
Andy Adams

Malheureusement, il existe un document bugwp_upload_dir() n’honore pas https (ssl). Ma suggestion est d'écrire un wrapper pour supprimer le protocole de l'URL renvoyée afin de le rendre adaptable à l'environnement:

function wp_upload_dir_url() {
  $upload_dir = wp_upload_dir();
  $upload_dir = $upload_dir['baseurl'];
  return preg_replace('/^https?:/', '', $upload_dir);
};
echo(wp_upload_dir_url() . '/2017/01/my-img.jpg');
// outputs something like '//mysite.test/wp-content/uploads/2017/01/my-img.jpg'
// which is perfectly acceptable as an img src

Si vous êtes préoccupé par l'impact sur les performances de l'utilisation de preg_replace() plusieurs fois, définissez une constante dans votre fichier functions.php:

define('WP_UPLOAD_DIR_URL', wp_upload_dir_url() . '/');
3
Dan S

J'ai trouvé la réponse. J'ai utilisé wp_upload_dir();wordpress codex

1
Ronny

C'est ce que j'avais l'habitude d'accéder à un fichier image nommé "rock_01.jpg" chargé dans le dossier wordpress "uploads/complete-theme /"

<?php $upload_dir = wp_upload_dir(); ?>
<img src="<?php echo $upload_dir['baseurl'] . '/complete-theme/rock_01.jpg'; ?>" />

Cela a fonctionné comme prévu.

0
surya_hs

Dan S indique un ticket de traçage où wp_upload_dir() ne prend pas en charge https. Je n'ai pas trouvé que c'était le cas sur mes sites, mais si cela vous concerne, vous pouvez ajouter un filtre à upload_dir et renvoyer manuellement le protocole correct basé sur la condition is_ssl().

add_filter( 'upload_dir', function( $upload_dir ){
  return array_map( function( $value ) {
    return is_ssl() ?
      str_replace( 'http://', 'https://', $value ) :
      str_replace( 'https://', 'http://', $value );
  }, $upload_dir );
}, 10, 1 );

Ensuite, vous pouvez continuer à utiliser wp_upload_dir() comme vous l’avez toujours fait.

Comme noté ici , sauf si vous avez des problèmes de performances spécifiques, vous devez utiliser https: //.

0
Nathan Johnson