Găsește postarea căreia îi aparține un atașament

1 mar. 2012, 17:54:44
Vizualizări: 14K
Voturi: 5

Am o listă de ID-uri de atașamente care au fost create folosind acest array:

$all_images = get_posts( array(
'post_type' => 'attachment', // Tipul postării - atașamente
'numberposts' => -1, // Obține toate atașamentele
) );

Este posibil să iau ID-ul imaginii din această listă și să găsesc Titlul și permalink-ul POSTĂRII căreia îi aparține imaginea?

Știu că este posibil pentru că Biblioteca Media afișează acest lucru, dar nu găsesc metoda corectă de a face asta în codex.

Am încercat acest cod, dar returnează titlul și permalink-ul atașamentului în sine, nu postarea căreia îi aparține:

$parent = get_post_field( 'post_parent', $imgID); // Obține ID-ul părintelui
$link = get_permalink($parent); // Obține link-ul permanent al părintelui
1
Comentarii

Googleri: $attachment->post_parent este ID-ul postării căreia atașamentul este asociat.

rinogo rinogo
21 iun. 2017 02:07:30
Toate răspunsurile la întrebare 3
1

Deci, dacă începi cu asta:

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

Atunci $all_images este un array de obiecte. Parcurge fiecare:

foreach ( $all_images as $image ) {}

În interiorul acelui foreach, poți folosi parametrii normali disponibili pentru obiectul $post:

  • $image->ID este ID-ul postului de atașament
  • $image->post_parent este ID-ul postului părinte al atașamentului

Așadar, hai să folosim asta pentru a obține ceea ce cauți, folosind get_the_title() și get_permalink():

// Obține ID-ul postului părinte
$parent_id = $image->post_parent;
// Obține titlul postului părinte
$parent_title = get_the_title( $parent_id );
// Obține linkul permanent al postului părinte
$parent_permalink = get_permalink( $parent_id );

Cam asta e tot!

Punând totul laolaltă:

<?php
// Obține toate atașamentele de tip imagine
$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );
// Parcurge toate atașamentele de tip imagine
foreach ( $all_images as $image ) {
    // Obține ID-ul postului părinte
    $parent_id = $image->post_parent;
    // Obține titlul postului părinte
    $parent_title = get_the_title( $parent_id );
    // Obține linkul permanent al postului părinte
    $parent_permalink = get_permalink( $parent_id );
}
?>
1 mar. 2012 18:07:57
Comentarii

Cred că am complicat lucrurile. A funcționat perfect!

Pat Pat
1 mar. 2012 18:21:34
0

Variabila $images este un array de obiecte post (atașamente). Puteți folosi wp_list_pluck pentru a extrage ID-ul părintelui într-un array. (array_unique și array_filter elimină ID-urile duplicate și respectiv pe cele goale - acest lucru poate sau nu poate fi dorit).

Apoi puteți parcurge ID-urile și puteți folosi get_permalink și get_the_title pentru a obține link-ul permanent și titlul postării:

$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>";
1 mar. 2012 18:17:08
2
-2

Putem folosi simplu https://wordpress.org/plugins/find-posts-using-attachment/

Sper că este cea mai bună metodă!

27 iun. 2016 03:39:48
Comentarii

Explicând ce face plugin-ul și cum răspunde la întrebare ar îmbunătăți răspunsul tău.

Gabriel Gabriel
27 iun. 2016 04:10:33

Acest plugin adaugă o coloană nouă în tabelele directorului media și toate postările care folosesc un atașament sunt afișate în ea.

magic-boy magic-boy
1 iul. 2016 04:09:56