web-dev-qa-db-fra.com

Obtenir une pièce jointe suivante et précédente par l'auteur uniquement

J'essaie d'obtenir la pièce jointe précédente et suivante de l'utilisateur actuellement affiché. C'est ce que j'ai et cela fonctionne très bien, sauf que toutes les pièces jointes sont récupérées, et pas uniquement celles d'un utilisateur spécifique.

<p>
<?php $attachment_size = apply_filters( 'twentyten_attachment_size', 900 ); 
echo wp_get_attachment_image($post->ID, array( $attachment_size, 9999) ); // filterable image width with, essentially, no limit for image height.?>
</p>

<div id="next-prev-links"><div class="previmg"><?php previous_image_link(); ?></div><p id="previmgtxt" class="imgtxt"><?php previous_image_link(false, 'Previous Photo'); ?></p>
<div class="nextimg"> <?php next_image_link(); ?></div><p id="nextimgtxt" class="imgtxt"><?php next_image_link(false, 'Next Photo'); ?></p></div>
2
Jeremy Love

Bonjour @ Jeremy Love:

Bonne question! Et c'est une bonne question car il ne semble pas y avoir de crochets pour vous permettre d'écrire du code à filtrer par auteur.

Malheureusement, cela signifie copier leur copie pour créer vos propres fonctions afin que vous puissiez effectuer le changement requis sur une ligne (dans ce cas, il s'agit de 'post_author' => $post->post_author,). Voici des fonctions que vous devriez pouvoir utiliser. utilisation:

function yoursite_previous_image_link($size = 'thumbnail', $text = false) {
  yoursite_adjacent_image_link(true, $size, $text);
}
function yoursite_next_image_link($size = 'thumbnail', $text = false) {
  yoursite_adjacent_image_link(false, $size, $text);
}
function yoursite_adjacent_image_link($prev=true,$size='thumbnail',$text=false) {
  global $post;
  $post = get_post($post);
  $attachments = array_values(get_children( array(
   'post_author' => $post->post_author,
   'post_parent' => $post->post_parent, 
   'post_status' => 'inherit', 
   'post_type' => 'attachment', 
   'post_mime_type' => 'image', 
   'order' => 'ASC', 
   'orderby' => 'menu_order ID'
   )));

  foreach ( $attachments as $k => $attachment )
    if ( $attachment->ID == $post->ID )
      break;
  $k = $prev ? $k - 1 : $k + 1;
  if ( isset($attachments[$k]) )
    echo wp_get_attachment_link($attachments[$k]->ID, $size, true, false, $text);
}
1
MikeSchinkel