WordPress : Champ personnalisé renvoyant une valeur numérique pour l’image plutôt que l’URL

Publié par Jean-Michel le

J’ai essayé de contourner mon dernier problème WordPress toute la matinée et je pense que c’est le bon moment pour crier et demander de l’aide.

I have been trying to create a people directory, I’m there except for the overall listing page which I have decided to be rows of 5 images followed by the persons name below each image, followed by another a row etc…

Each persons page has a set of custom fields one of which is name and another is mainimage the idea being that with the following code I can pull the image along with the name from the child pages of people and display them all on the one page with the image and name linked to the permalinkof the specific child page.

<?php
    // Get the page's children
    $args = array( 'numberposts' => 100, 'child_of' => 35, 'post_type' => page, );
    $children = get_pages( $args );

if (!empty($children)) {
    echo '';
    foreach($children as $child) {
        // Get the 2 meta values from the child page
        $main_image = get_post_meta($child->ID, 'main_image', true);
        $name = get_post_meta($child->ID, 'name', true);

        // Display the meta values
        echo '<br />';
        echo $main_image;
        echo '<br />';
        echo $name;
    }
    echo '';
}
?>

It works kind of, but I’m getting a number for the image as opposed something that outputs to an image. Upon checking the custom field I have found the image value is a number, looks to me like media ID.

Je dois être capable d’interpréter l’ID dans la page des personnes comme une image ou un moyen de m’assurer que les URL réelles sont insérées dans les valeurs de champ personnalisées afin que je puisse utiliser le img srccode HTML standard pour générer l’image.

J’utilise des champs personnalisés avancés pour créer les ensembles de champs pour la page des personnes ainsi que les pages individuelles des personnes.

Toute aide serait grandement appréciée car j’ai essayé plusieurs variantes du code ci-dessus, mais je n’arrive tout simplement pas à obtenir le numéro à modifier dans l’image associée.

Solution n°1 trouvée

Lorsque vous utilisez get_field()ou the_field()et que l’ID d’image est renvoyé au lieu de la valeur de retour attendue, il s’agit d’un signe qui acf_add_local_field_group()n’a pas été exécuté. Par conséquent, ACF extrait la valeur brute de la base de données mais n’a aucun moyen de déterminer dans quel format vous la souhaitez.

Pour résoudre le problème, assurez-vous qu’il acf_add_local_field_group()est exécuté à partir du initcrochet, et non de l’un des admin_*crochets.

Solution n°2 trouvée

Utilisez wp_get_attachment_image( $id ).

Exemple de code :

print wp_get_attachment_image(
    $main_image,
    array ( 80, 80 ),
    FALSE,
    array ( 'alt' => 'portrait' )
);
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *