web-dev-qa-db-fra.com

Obtenir les médias attachés seulement

J'utilise wp_query pour obtenir les médias téléchargés. Tout fonctionne bien, mais wp_query renverra les médias sans publication. Ce n'est pas ce que je voulais. Comment puis-je exclure les médias non liés de wp_query?

Voici les arguments de ma requête qui ressemblent à:

 $args = array(
  'post_type' => 'attachment',
  'post_status' => 'inherit',
  'posts_per_page' => -1,
  );
  $attachemnt = new WP_Query($args);

Existe-t-il un argument pouvant être utilisé pour exclure les médias non attachés dans la classe wp_query?

Merci

1
dev-jim

Tous les médias (un peu incorrectement) dans la table $wpdb->posts seront des "pièces jointes", qu'elles soient réellement attachées ou non. Les "pièces jointes" qui sont réellement attachées auront un post_parent différent de 0, vous avez donc besoin de toutes les pièces jointes qui ont un 0 dans la colonne post_parent, si je vous comprends bien.

$args = array(
  'post_type' => 'attachment',
  'post_status' => 'inherit',
  'posts_per_page' => -1,
  'post_parent__not_in' = array(0)
);
$attachment = new WP_Query($args);

var_dump($attachment->posts);
4
s_ha_dum
<?php if ( $post->post_type == **'post type name'** && $post->post_status == 'publish' ) {
    $attachments = get_posts( array(
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'post_parent' => $post->ID,
        'exclude'     => get_post_thumbnail_id()
    ) );

    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
            $class = "post-attachment mime-" . sanitize_title( $attachment->post_mime_type );
            $thumbimg = wp_get_attachment_link( $attachment->ID, 'thumbnail-size', true );
            echo '<li class="' . $class . ' data-design-thumbnail">' . $thumbimg . '</li>';
        }

    }
}

?>

0
Chetan