web-dev-qa-db-fra.com

Exclure l'image sélectionnée de la boucle de pièce jointe

Pour mon thème jigoshop, je suis en mesure de récupérer les images attachées à ma publication de produit. Cependant, il extrait toutes les images de l'image sélectionnée et de mes images Metabox. Ce que j'essaie de faire, c'est de faire en sorte que l'image sélectionnée soit exclue, mais cela ne fonctionne pas. Il semble également y avoir d'autres images pour le poste pour une raison quelconque.

J'ai essayé cette suggestion sans succès.

Voici ce que j'ai jusqu'à présent:

    global $_product, $post; 
    $thumb_id = get_post_thumbnail_id($post->ID);

    $args = array(
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => $post->ID,
    'orderby' => 'menu_order',
    'exclude' => $thumb_id,
    'order' => 'asc'
    );

    $attachments = get_posts($args);
    if ($attachments) :
        $loop = 0;

        foreach ( $attachments as $attachment ) :

            if ($thumb_id==$attachment->ID) continue;

            $loop++;

            $_post =  get_post( $attachment->ID );
            $url = wp_get_attachment_url($_post->ID);
            $post_title = esc_attr($_post->post_title);
            $image = wp_get_attachment_image_src($attachment->ID, 'full');
            $image = $image[0];
            $image_path =  thumbGen($image,500,0,"crop=1&halign=center&valign=center&return=1");
            $image_all = get_bloginfo('url').$image_path;
            $my_image = array_values(getimagesize($image_all));
            list($width, $height, $type, $attr) = $my_image;            

            if ( ! $image || $url == get_post_meta($post->ID, 'file_path', true) )
                continue;

            echo '<span><img src="'.$image.'" alt="'.get_the_title().'" title="'.get_the_title().'" width="'.$width.'" height="'.$height.'"/></span>';

        endforeach;

    endif;

Des idées?

1
jonthoughtit

Essayez d'utiliser cet ensemble d'arguments:

$args = array(
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'numberposts' => -1,
    'post_parent' => $post->ID,
    'orderby' => 'menu_order',
    'order' => 'asc',
    'post__not_in' => array( $thumb_id )
);

Je l'utilise pour l'un de mes sites et cela fonctionne bien. Donc, vous ne devriez pas avoir à utiliser:

 if ($thumb_id==$attachment->ID) continue;

dans ta boucle.

Étrangement, la page de codex get_posts() ( http://codex.wordpress.org/Template_Tags/get_posts ) indique que nous pourrions utiliser un paramètre exclude, mais aussi dit que get_posts() utilise WP_Query(). Et il n'y a pas de paramètre exclude dans le Codex pour WP_Query() ( http://codex.wordpress.org/Class_Reference/WP_Query ), uniquement post__not_in.

Donc, utilisons post__not_in au lieu de exclude.

Ça ressemble à une différence.

1
Simon