Encontre a postagem à qual um anexo está anexado

4

Eu tenho uma lista de IDs de anexos que são criados usando essa matriz:

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

É possível obter o ID da imagem dessa lista e encontrar o título e o link permanente do POST ao qual a imagem está anexada?

Eu sei que é viável porque a Biblioteca de Mídia mostra isso, mas não consigo encontrar o jeito certo de fazer isso com o códice.

Eu tentei esse código, mas ele retorna o título e permalink para o anexo em si, não o post ao qual está anexado:

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

3 respostas

4

Então, se você começar com isso:

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

Em seguida, $all_images é uma matriz de objetos . Percorra cada um deles:

foreach ( $all_images as $image ) {}

Dentro desse foreach, você pode usar os parâmetros normais disponíveis para o objeto $post :

  • $image->ID é o ID da postagem do anexo
  • $image->post_parent é o ID da postagem pai da postagem do anexo

Então, vamos usar isso, para conseguir o que você procura, usando get_the_title() e 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 );

Isso é muito bonito!

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

O $images é uma matriz de objetos de postagem (anexos). Você pode usar wp_list_pluck para extrair o ID de seus pais em uma matriz. ( array_unique e array_filter removem IDs duplicados e IDs vazios respectivamente - isso pode ou não ser desejável).

Você pode percorrer os IDs e usar get_permalink e get_the_title para obter o permalink e título da postagem:

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

Podemos usar simplesmente enlace

Espero que seja o melhor caminho!

    
por magic-boy 27.06.2016 / 02:39