Je sais qu'il existe des plugins qui récupèrent les images de l'URL distante et les stockent localement. Je veux juste savoir s'il est possible de ne pas stocker d'image dans la médiathèque tout en l'utilisant comme image sélectionnée ?
20
the_post_thumnail()
est présent (ou une fonction similaire) ou de le faire fonctionner avec différentes tailles d'image définies par le thème ou le plugin.Réponses:
Oui, c'est possible et assez facile.
Voici le workflow que je propose:
'admin_post_thumbnail_html'
crochet de filtre'save_post'
crochet d'action pour enregistrer l'URL (après la routine de sécurité et de validation) dans une méta de publication personnalisée'post_thumbnail_html'
crochet de filtre pour afficher le<img>
balisage approprié , en remplaçant la valeur par défaut, si le message pour lequel l'image sélectionnée est requise a la méta du message avec l'image sélectionnée externePour fonctionner, ce flux de travail nécessite que l'image sélectionnée soit affichée dans le modèle à l'aide des fonctions
get_the_post_thumnbail()
outhe_post_thumbnail()
.De plus, nous devons être sûrs que la
'_thumbnail_id'
valeur méta a une valeur non vide lorsque nous définissons la méta pour l'URL externe, sinonhas_post_thumbnail()
retournera false pour les publications qui n'ont qu'une image externe en vedette.En fait, il est possible qu'un poste est à la fois une norme image locale sélectionnée et un jeu via notre flux de travail, et dans ce cas , l'extérieur sera utilisé.
Pour implémenter notre flux de travail, nous avons besoin d'une fonction pour valider l'URL utilisée comme image vedette externe, car nous devons être sûrs qu'il s'agit d'une URL d'image valide.
Il existe différentes façons d'accomplir cette tâche; ici j'utilise un moyen très simple qui ne regarde que l'URL, sans télécharger l'image. Cela ne fonctionne que pour les URL d'images statiques et ne vérifie pas que l'image existe réellement, mais c'est rapide. Modifiez-le en quelque chose de plus avancé si vous en avez besoin ( voici de l' aide).
Plutôt facile. Ajoutons maintenant les 3 crochets décrits dans le workflow ci-dessus:
et les fonctions associées. D'abord celui qui sort le champ dans l'admin:
Notez que j'ai utilisé
'txtdomain'
comme domaine de texte, mais vous devez utiliser un domaine de texte enregistré et approprié.Voici à quoi ressemble la sortie lorsqu'elle est vide:
Et voici à quoi cela ressemble après avoir ajouté une URL d'image et enregistré / mis à jour le message:
Donc, maintenant notre interface d'administration est terminée, écrivons la routine de sauvegarde:
La fonction, après quelques vérifications de sécurité, examine l'URL publiée et si elle est correcte, l'enregistre dans la
'_thumbnail_ext_url'
méta-publication. Si l'URL est vide et que la méta a été enregistrée, elle est supprimée, ce qui permet de supprimer la méta simplement en vidant le champ URL externe.La dernière chose à faire est de sortir le balisage d'image en vedette lorsque notre URL d'image externe est définie en méta:
Nous avons fini.
Que reste-t-il à faire
Dans la sortie d'image sélectionnée , je ne l' ai pas utilisé
width
ouheight
propriétés, ni classes WordPress ajoute généralement, comme'attachment-$size'
. C'est parce que renifler la taille d'une image nécessite un travail supplémentaire qui ralentira le chargement de la page, surtout si vous avez plusieurs images en vedette dans la page.Si vous avez besoin de ces attributs, vous pouvez utiliser mon code en ajoutant un rappel pour
wp_get_attachment_image_attributes'
filtrer (c'est un crochet WordPress standard ) ou peut-être pouvez-vous modifier mon code pour renifler la taille de l'image et afficher les attributs et classes associés.Plugin Gist
Tout le code affiché ici, à l'exception de l' ajout d' une initialisation de domaine de texte proprement dit , est disponible en tant que plugin-travail complet dans un Contenu essentiel ici . Le code utilise un espace de noms, il nécessite donc PHP 5.3+.
Remarques
Bien sûr, vous devez vous assurer que vous disposez d'une licence et d'une autorisation pour utiliser et créer des liens hypertexte dans votre site à partir d'images externes.
la source