it-swarm.com.de

Suchen Sie den Beitrag, an den ein Anhang angehängt ist

Ich habe eine Liste von Anhangs-IDs, die mit diesem Array erstellt wurden:

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

Ist es möglich, die Bild-ID aus dieser Liste zu entnehmen und den Titel und den Permalink des POST zu finden, an den das Bild angehängt ist?

Ich weiß, dass es machbar ist, weil die Medienbibliothek es zeigt, aber ich kann nicht den richtigen Weg finden, um dies mit dem Codex zu tun.

Ich habe diesen Code ausprobiert, er gibt jedoch den Titel und den Permalink zum Anhang selbst zurück und nicht zum Post, an den er angehängt ist:

$parent = get_post_field( 'post_parent', $imgID);
$link = get_permalink($parent);
4
Pat

Also, wenn Sie damit beginnen:

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

Dann ist $all_images ein Array von objects . Schritt durch jeden:

foreach ( $all_images as $image ) {}

In diesem Abschnitt können Sie die normalen Parameter verwenden, die für das Objekt $post verfügbar sind:

  • $image->ID ist die ID des Anhangpostens
  • $image->post_parent ist die ID des übergeordneten Beitrags des Anhangs

Verwenden wir das also, um herauszufinden, wonach Sie suchen, und verwenden get_the_title() und 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 );

Das wars so ziemlich!

Alles zusammenfassen:

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

Der $images ist ein Array von Post-Objekten (Anhängen). Sie können wp_list_pluck verwenden, um die ID ihrer Eltern in ein Array zu extrahieren. (array_unique und array_filter entfernen doppelte IDs bzw. leere IDs - dies kann/kann nicht wünschenswert sein).

Sie können die IDs durchlaufen und get_permalink und get_the_title verwenden, um den Permalink und den Titel des Posts zu erhalten:

$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>";
2
Stephen Harris