web-dev-qa-db-fra.com

Obtenir l'URL de l'image téléchargée

Je travaille sur un plugin qui construit un bulletin d'information qui utilise un modèle avec quelques images.

Les images ont été téléchargées à l'aide de la bibliothèque multimédia (uploads/current_year/current_month/) et je souhaite obtenir l'URL des images à l'aide du nom de l'image.

Tout moyen de le faire sans parcourir toutes les images?

J'ai essayé de stocker les images dans le dossier du plugin, mais le site Web utilise https et cet emplacement n'est pas accessible sans authentification.

Des suggestions sur différents endroits pour stocker les images?

2
thedev

Je pense que vous devriez exécuter une requête mySQL personnalisée dans la table wp_posts, quelque chose comme:

SELECT ID FROM `wp_posts` where guid like '%filename.jpg';

(bien sûr, utilisez l'objet $ wpdb pour interroger la base de données). Ensuite, vous aurez le postid de cette pièce jointe et vous pourrez utiliser wp_get_attachment_url () à partir de l'API WP.

1
Maor Barazany

wp_upload_dir() est parfait. C'est le seul endroit où vous pouvez vous attendre à des autorisations d'écriture.

Stocker l'ID de pièce jointe, pas un chemin. Ensuite, vous obtenez l'image avec:

wp_get_attachment_url( $attach_id )

Parfois, un utilisateur peut avoir supprimé l'image par médiathèque. Pour éviter les problèmes de fichiers manquants, commencez par vérifier la valeur renvoyée par wp_get_attachment_url(). Extrait de l'un de mes plugins:

/**
 * Returns image markup.
 * Empty string if there is no image.
 *
 * @param  int    $attach_id
 * @return string
 */
protected function get_image_tag( $attach_id )
{

    $img_url = (string) wp_get_attachment_url( $attach_id );

    if ( '' == $img_url )
    {
        return '';
    }

    $img = "<img src='$img_url' alt='' width='$this->width' height='$this->height'>";

    return $img;
}
1
fuxia