J'utilise ce code directement depuis le codex .
function echo_first_image ($postID)
{
$args = array(
'numberposts' => 1,
'order'=> 'ASC',
'post_mime_type' => 'image',
'post_parent' => $postID,
'post_status' => null,
'post_type' => 'attachment'
);
$attachments = get_children( $args );
//print_r($attachments);
if ($attachments) {
foreach($attachments as $attachment) {
$image_attributes = wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) ? wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) : wp_get_attachment_image_src( $attachment->ID, 'full' );
echo '<img src="'.wp_get_attachment_thumb_url( $attachment->ID ).'" class="current">';
}
}
}
Je l'appelle dans la boucle comme ça echo_first_image ($post->ID);
La fonction appelle mais rien ne sort ... autant que je sache, il n'y a rien dans $attachments
J'ai une image dans le message que j'utilise. Ce n'est pas une image en vedette ou dans une galerie, juste dans le post.
Suis-je en train de faire quelque chose de mal, ou y a-t-il quelque chose de mal avec le code en premier lieu?
get_childre
, une pièce jointe est une publication enfant, donc cet exemple ne peut fonctionner que pour le contenu joint.Je suggère deux façons:
Utiliser un plugin
J'envisagerais d'utiliser le plugin Get The Image , afin que vous puissiez faire quelque chose comme:
Ce qui précède va essayer de faire les choses dans cet ordre:
Renforcer le soutien dans votre thème
Cependant, j'utilise une fonction dans un plugin qui implémente les deux premiers éléments de la liste ci-dessus.
Vous pouvez l'adapter pour correspondre également au troisième élément de l'extrait de Diana:
Il suffit de coller ces deux fonctions dans votre
functions.php
fichier et de les utiliser dans la boucle comme:la source
le code semble parfaitement sûr. comme vous l'avez dit, vous n'avez aucune image attachée au post.
Pensez à accéder au panneau d'administration multimédia et à joindre une image à ce message.
Alternativement, supprimez le contenu du message avec une expression régulière pour les images qu'il contient.
la source
Je comprends que c'est une très vieille question, mais je mets ma réponse ici car la plupart des réponses votées ne conviennent pas aux personnes qui découvrent PHP.
preg_match n'est pas une bonne approche pour analyser HTML en PHP car preg_match est pour l'expression régulière et HTML n'est pas l'expression régulière.
Nous pouvons utiliser DOM à la place.
L'utilisation de DOM est vraiment bonne car vous pouvez faire autre chose que simplement obtenir la première image et c'est la bonne façon d'analyser le html.
J'aimerais pouvoir répondre à l'utilisation des fonctions wordpress (fonctions de CODEX et de base) pour obtenir la première image, mais c'est aussi le problème que je traite.
la source
Ce code fonctionne pour moi:
la source