come ottenere il percorso delle immagini nella cartella uploads da utilizzare in un plugin

12 dic 2012, 19:06:48
Visualizzazioni: 56.2K
Voti: 10

Ho alcune immagini nella cartella /wp-content/uploads. Ho anche un file plugin in /wp-content/plugins. Voglio recuperare le immagini memorizzate in /wp-content/uploads e utilizzarle nel file del plugin.

Ho provato

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

qualcuno può mostrarmi come posso ottenere il percorso di queste immagini? grazie.

0
Tutte le risposte alla domanda 5
0

Se non sbaglio, potresti voler provare la funzione wp_uploads_dir, in questo modo:

$uploads = wp_upload_dir(); 

echo '<img src="' . esc_url( $uploads['baseurl'] . '/USER_PHOTOS/ronny/' ) . '" href="#">';
12 dic 2012 19:32:35
0

Sfortunatamente esiste un bug documentato per cui wp_upload_dir() non rispetta il protocollo https (ssl). Il mio suggerimento è scrivere un wrapper per rimuovere il protocollo dall'URL restituito, rendendolo così adattabile all'ambiente:

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');
// restituirà qualcosa come '//mysite.test/wp-content/uploads/2017/01/my-img.jpg'
// che è perfettamente accettabile come src per un'immagine

Se sei preoccupato per l'impatto sulle prestazioni dell'usare preg_replace() più volte, allora imposta una costante nel tuo file functions.php:

define('WP_UPLOAD_DIR_URL', wp_upload_dir_url() . '/');
17 apr 2017 22:35:03
0

Dan S segnala un ticket trac in cui wp_upload_dir() non supporta https. Personalmente non ho riscontrato questo problema sui miei siti, ma se dovesse riguardarvi, potete aggiungere un filtro a upload_dir e restituire manualmente il protocollo corretto basandovi sulla condizione 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 );

In questo modo potrete continuare a utilizzare wp_upload_dir() come avete sempre fatto.

Come notato qui, a meno che non abbiate specifiche preoccupazioni sulle prestazioni, dovreste utilizzare https://.

18 apr 2017 00:18:04
0

Ho trovato la risposta. Ho utilizzato wp_upload_dir(); codex di WordPress

12 dic 2012 19:30:33
0

Questo è quello che ho usato per accedere a un file immagine chiamato "rock_01.jpg" caricato nella cartella di WordPress "uploads/complete-theme/"

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

Ha funzionato come previsto.

16 ott 2016 07:03:07