Objectif : À partir de mon image.php, j'affiche l'image de la pièce jointe et certaines descriptions. Je veux aussi obtenir le message de l'endroit où il a été posté à l'origine. Je n'ai besoin que du titre et de l'URL pour pouvoir vous relier à partir du message original.
Problème : Il n'affiche pas le titre et l'URL de l'article correct. Au lieu de cela, il affiche le premier et le dernier message que j'ai posté. Lorsque je modifie le numéro en "1" au lieu de "-1", le nom change simplement en premier ou en dernier post.
Code : À partir de ce message: Trouver le message auquel une pièce jointe est attachée
<?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 );
}
echo "This image is posted to: <a href='".$parent_permalink ."' >".$parent_title."</a>";
?>
Toutes les pièces jointes ont un post-parent auquel vous pouvez accéder avec $post->post_parent
à l'intérieur de la boucle ou get_queried_object()->post_parent
à l'extérieur de la boucle sur vos pages image.php
ou similaires. ( Voir ma question ici et le répondre par @gmazzap pourquoi vous devriez plutôt éviter $post
en dehors de la boucle )
Maintenant que vous avez l'identifiant post parent, il est facile de réécrire votre fonction: ( CAVEAT: Untested )
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 = '<a href="' . $permalink . '" title="' . $parent_title . '">' . $parent_title . '</a>';
return $link;
}
Vous pouvez ensuite l'utiliser comme suit
echo get_parent_post_anchor();