web-dev-qa-db-ja.com

作者のみによる添付ファイルの前後の添付ファイルの取得

現在表示しているユーザーが次と前の添付ファイルを取得しようとしています。これは私が持っているもので、特定のユーザーからの添付ファイルではなくすべての添付ファイルを取得することを除けば素晴らしい機能です。

<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

こんにちは@ Jeremy Love:

良い質問!作者によるフィルタリングにコードを記述できるようにするためのフックがないように思われるので、それは良い質問です。

残念ながらそれはあなたが必要とする1行の変更を作ることができるようにあなた自身の機能を作るためにそれらのコピーをコピーすることを意味します(この場合それは'post_author' => $post->post_author,です)。これはあなたが使うことができるはずの関数です:

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