Trouver le message auquel une pièce jointe est attachée

4

J'ai une liste d'ID de pièces jointes construites à l'aide de ce tableau:

$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );

Est-il possible de prendre l'identifiant de l'image de cette liste et de rechercher le titre et le lien permanent du POST auquel l'image est attachée?

Je sais que c'est faisable parce que la médiathèque le montre, mais je ne trouve pas la bonne façon de procéder avec le codex.

J'ai essayé ce code, mais il renvoie le titre et le lien permanent vers la pièce jointe elle-même, et non le message auquel elle est attachée:

$parent = get_post_field( 'post_parent', $imgID);
$link = get_permalink($parent);
    
posée Pat 01.03.2012 - 16:54

3 réponses

4

Donc, si vous commencez par ceci:

$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );

Alors, $all_images est un tableau d'objets . Parcourez chacun d'eux:

foreach ( $all_images as $image ) {}

A l'intérieur de chaque for, vous pouvez utiliser les paramètres normaux disponibles pour l'objet $post :

  • $image->ID est l'ID de la pièce jointe
  • $image->post_parent est l'ID de la parent publication de la pièce jointe

Utilisons donc cela pour obtenir ce que vous cherchez, en utilisant get_the_title() et get_permalink() :

// Get the parent post ID
$parent_id = $image->post_parent;
// Get the parent post Title
$parent_title = get_the_title( $parent_id );
// Get the parent post permalink
$parent_permalink = get_permalink( $parent_id );

C'est à peu près tout!

Rassembler tout cela:

<?php
// Get all image attachments
$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );
// Step through all image attachments
foreach ( $all_images as $image ) {
    // Get the parent post ID
    $parent_id = $image->post_parent;
    // Get the parent post Title
    $parent_title = get_the_title( $parent_id );
    // Get the parent post permalink
    $parent_permalink = get_permalink( $parent_id );
}
?>
    
réponse donnée Chip Bennett 01.03.2012 - 17:07
2

Le $images , est un tableau d'objets post (pièces jointes). Vous pouvez utiliser wp_list_pluck pour extraire l'ID de leur parent dans un tableau. ( array_unique et array_filter suppriment respectivement les identifiants en double et les identifiants vides - cela peut ne pas être souhaitable).

Vous pouvez les parcourir et utiliser get_permalink et get_the_title pour obtenir le permalien et le titre de l'article:

$images = get_posts( array(
    'post_type' => 'attachment',
    'numberposts' => -1,
) );
$parents = array_filter(wp_list_pluck($images,'post_parent'));
$parents = array_unique($parents);
echo "<ul>";
foreach ($parents as $id){
    echo "<li><a href='".get_permalink($id)."' >".get_the_title($id)."</a></li>";
}
echo "</ul>";
    
réponse donnée Stephen Harris 01.03.2012 - 17:17
-1

Nous pouvons simplement utiliser enlace

J'espère que c'est le meilleur moyen!

    
réponse donnée magic-boy 27.06.2016 - 02:39

Lire d'autres questions sur les étiquettes