Erhalte den Titel und die URL des übergeordneten Anhangs

Ziel : In meiner image.php zeige ich das Anhangsbild und einige Beschreibungen an. Ich möchte auch den Post von der Stelle erhalten, an der er ursprünglich gepostet wurde. Ich brauche nur den Titel und die URL, so dass Sie vom ursprünglichen Beitrag zurück verlinken können.

Problem : Es werden nicht der korrekte Beitragstitel und die URL angezeigt. Stattdessen wird der erste und der letzte Post angezeigt, den ich gepostet habe. Wenn ich die Zahl auf “1” anstelle von “-1” ändere, ändert sich der Name entweder in den ersten Post oder den letzten Post.

Code : Von diesem Beitrag: Finde den Beitrag, an den ein Anhang angehängt ist

 '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 ); } echo "This image is posted to: ".$parent_title.""; ?> 

Solutions Collecting From Web of "Erhalte den Titel und die URL des übergeordneten Anhangs"

Alle Anhänge haben einen Post-Parent, auf den Sie mit $post->post_parent innerhalb der Schleife oder get_queried_object()->post_parent außerhalb der Schleife auf Ihrer image.php oder ähnlichen einzelnen Post-Seiten image.php . ( Siehe meine Frage hier und die Antwort von @gmazzap, warum sollte man lieber $post außerhalb der Schleife vermeiden )

Jetzt, da Sie die Nach-Eltern-ID haben, ist es einfach, Ihre function neu zu schreiben: ( CAVEAT: Nicht getestet )

 function get_parent_post_anchor() { /* * Make sure we are on an attachment page, else bail and return false */ if ( !is_attachment() ) return false; /* * Get current attachment object */ $current_attachment = get_queried_object(); /* * Get the permalink of the parent */ $permalink = get_permalink( $current_attachment->post_parent ); /* * Get the parent title */ $parent_title = get_post( $current_attachment->post_parent )->post_title; /* * Build the link */ $link = '' . $parent_title . ''; return $link; } 

Sie können es dann wie folgt verwenden

 echo get_parent_post_anchor();