web-dev-qa-db-fra.com

Comment puis-je obtenir une image aléatoire d'un sous-ensemble d'images dans la médiathèque?

Si une publication personnalisée ne comporte pas d'image en vedette, j'aimerais saisir une image de la médiathèque pour l'utiliser à la place de l'image en vedette. Ces images particulières ne seraient attachées à aucun message, et ne seraient utilisées que pour remplacer une image sélectionnée dans les messages où il n'y en a pas. Je ne veux obtenir aucune image de la médiathèque, mais uniquement celles que j'ai étiquetées.

Je le travaille maintenant avec un ensemble d'images codées en dur (que je viens de ftp'd dans le répertoire uploads). Cependant, j'aimerais pouvoir ajouter des images à la médiathèque et les "étiqueter" pour les utiliser comme images par défaut. Comme il ne semble pas y avoir de catégories/tags/taxonomies pour les images téléchargées, quelle serait la meilleure solution pour obtenir cette fonctionnalité?

La seule chose à laquelle je pouvais penser est de créer une page et de télécharger toutes mes "images par défaut" sur cette page. Il vous suffit ensuite de rechercher toutes les images attachées à cette page et d’en utiliser une aléatoire. Il doit cependant exister un meilleur moyen que de créer une page inutile pour classer les images par catégorie.

2
bassfan

Vous pouvez utiliser les taxonomies avec la médiathèque, il vous suffit d’ajouter une taxonomie intégrée ou de enregistrer une nouvelle taxonomie .

Par exemple, l’ajout de la taxonomie intégrée aux balises post-tag aux pièces jointes:

function wpd_attachment_taxonomy() {
    register_taxonomy_for_object_type( 'post_tag', 'attachment' );
}
add_action( 'init', 'wpd_attachment_taxonomy' );

Vous pouvez ensuite rechercher des images avec une balise spécifique:

$args = array(
    'post_type' => 'attachment',
    'post_status' => 'inherit',
    'tag' => 'tagged',
    'posts_per_page' => 1,
    'fields' => 'ids',
    'orderby' => 'Rand'
);

$image = new WP_Query( $args );

if( $image->have_posts() ){
    $image_attributes = wp_get_attachment_image_src( $image->posts[0], 'full' );
    echo $image_attributes[0];
}

Remplacez tagged par la slug de la balise choisie. Cela permettra d'obtenir l'ID de pièce jointe d'une image aléatoire avec votre tag. Nous pouvons ensuite utiliser cet ID pour obtenir les attributs d'image de pièce jointe.

4
Milo