Encuentre la publicación a la que se adjunta un archivo adjunto

4

Tengo una lista de ID de adjuntos que se crean utilizando esta matriz:

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

¿Es posible tomar la ID de imagen de esta lista y encontrar el Título y el enlace permanente de la POST a la que se adjunta la imagen?

Sé que es factible porque Media Library lo muestra, pero no puedo encontrar la manera correcta de hacer esto con el códice.

He intentado este código, sin embargo, devuelve el título y el enlace permanente al archivo adjunto, no la publicación a la que se adjunta:

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

3 respuestas

4

Entonces, si comienzas con esto:

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

Entonces, $all_images es una matriz de objetos . Paso a través de cada uno:

foreach ( $all_images as $image ) {}

Dentro de ese foreach, puedes usar los parámetros normales disponibles para el objeto $post :

  • $image->ID es el ID de la publicación adjunta
  • $image->post_parent es el ID de la publicación parent de la publicación adjunta

Entonces, usemos eso, para obtener lo que buscas, usando get_the_title() y 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 );

¡Eso es todo!

Poniéndolo todo junto:

<?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 );
}
?>
    
respondido por el Chip Bennett 01.03.2012 - 17:07
2

El $images , es una matriz de objetos de publicación (adjuntos). Puede usar wp_list_pluck para extraer el ID de sus padres en una matriz. ( array_unique y array_filter eliminan las identificaciones duplicadas y las identificaciones vacías respectivamente, esto puede / no puede ser conveniente).

Puede desplazarlos por los ID y utilizar get_permalink y get_the_title para obtener el enlace permanente y el título de la publicación:

$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>";
    
respondido por el Stephen Harris 01.03.2012 - 17:17
-1

Podemos usar simplemente enlace

¡Espero que sea de la mejor manera!

    
respondido por el magic-boy 27.06.2016 - 02:39

Lea otras preguntas en las etiquetas