Encontrar el post al que está adjunto un archivo en WordPress

1 mar 2012, 17:54:44
Vistas: 14K
Votos: 5

Tengo una lista de IDs de adjuntos que se crearon usando este array:

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

¿Es posible tomar el ID de imagen de esta lista y encontrar el Título y el enlace permanente del POST al que está adjunta la imagen?

Sé que es factible porque la Biblioteca de Medios lo muestra, pero no encuentro la manera correcta de hacer esto con el codex.

He probado este código, pero devuelve el título y enlace del adjunto en sí, no del post al que está adjunto:

$parent = get_post_field( 'post_parent', $imgID);
$link = get_permalink($parent);
1
Comentarios

Googlers: $attachment->post_parent es el ID de la publicación a la que está adjunto el archivo adjunto.

rinogo rinogo
21 jun 2017 02:07:30
Todas las respuestas a la pregunta 3
1

Entonces, si comienzas con esto:

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

Luego $all_images es un array de objetos. Itera 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 del post de adjunto
  • $image->post_parent es el ID del post padre del adjunto

Así que usemos eso para obtener lo que buscas, utilizando get_the_title() y get_permalink():

// Obtener el ID del post padre
$parent_id = $image->post_parent;
// Obtener el título del post padre
$parent_title = get_the_title( $parent_id );
// Obtener el enlace permanente del post padre
$parent_permalink = get_permalink( $parent_id );

¡Eso es básicamente todo!

Juntándolo todo:

<?php
// Obtener todos los adjuntos de imágenes
$all_images = get_posts( array(
'post_type' => 'attachment',
'numberposts' => -1,
) );
// Iterar a través de todos los adjuntos de imágenes
foreach ( $all_images as $image ) {
    // Obtener el ID del post padre
    $parent_id = $image->post_parent;
    // Obtener el título del post padre
    $parent_title = get_the_title( $parent_id );
    // Obtener el enlace permanente del post padre
    $parent_permalink = get_permalink( $parent_id );
}
?>
1 mar 2012 18:07:57
Comentarios

Supongo que lo estaba pensando demasiado. ¡Esto funcionó perfectamente!

Pat Pat
1 mar 2012 18:21:34
0

La variable $images es un array de objetos de post (adjuntos). Puedes usar wp_list_pluck para extraer los IDs de sus padres en un array. (array_unique y array_filter eliminan los IDs duplicados y los IDs vacíos respectivamente - esto puede o no ser deseable).

Luego puedes iterar a través de los IDs y usar get_permalink y get_the_title para obtener el enlace permanente y el título del post:

$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

Podemos usar simplemente https://wordpress.org/plugins/find-posts-using-attachment/

¡Espero que sea la mejor manera!

27 jun 2016 03:39:48
Comentarios

Explicar qué hace el plugin y cómo responde a la pregunta mejoraría tu respuesta.

Gabriel Gabriel
27 jun 2016 04:10:33

Este plugin añade una nueva columna en las tablas del directorio de medios y muestra en ella todas las publicaciones que utilizan un adjunto.

magic-boy magic-boy
1 jul 2016 04:09:56