Găsește postarea căreia îi aparține un atașament
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

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 );
}
?>

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>";

Putem folosi simplu https://wordpress.org/plugins/find-posts-using-attachment/
Sper că este cea mai bună metodă!
