投稿に関連付けられているギャラリーのすべての画像のURL(実際のサイズ)をsingle.php
で取得する必要があります。 Codex からの次のコードは非常に小さいサイズ150x150のすべての画像を返します。これは私が欲しいものには適していません。
<?php
while ( have_posts() ) : the_post();
if ( get_post_gallery() ) :
$gallery = get_post_gallery( get_the_ID(), false );
foreach( $gallery['src'] AS $src )
{
?>
<img src="<?php echo $src; ?>" class="my-custom-class" alt="Gallery image" />
<?php
}
endif;
endwhile;
?>
次に、実際のサイズで画像を元に戻すしかしギャラリー内のすべての画像を返す(現在の投稿のギャラリー内の画像だけでなく)次の方法を見つけます
<?php
global $post;
$thumbnail_ID = get_post_thumbnail_id();
$images = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
print_r( $images );
if ($images) :
foreach ($images as $attachment_id => $image) :
if ( $image->ID != $thumbnail_ID ) :
$img_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); //alt
if ($img_alt == '') : $img_alt = $image->post_title; endif;
$big_array = image_downsize( $image->ID, 'large' );
$img_url = $big_array[0];
echo '<li>';
echo '<img src="';
echo $img_url;
echo '" alt="';
echo $img_alt;
echo '" />';
echo '</li><!--end slide-->';
endif; endforeach; endif;
だから私は$post_id = get_the_ID();
をcedeに追加することでこれを取り出そうとしました:
<?php
global $post;
$thumbnail_ID = get_post_thumbnail_id();
$post_id = get_the_ID();
$images = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
print_r( $images );
if ($images) :
foreach ($images as $attachment_id => $image) :
if ( $image->ID != $thumbnail_ID ) :
$img_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); //alt
if ($img_alt == '') : $img_alt = $image->post_title; endif;
$big_array = image_downsize( $image->ID, 'large' );
$img_url = $big_array[0];
echo '<li>';
echo '<img src="';
echo $img_url;
echo '" alt="';
echo $img_alt;
echo '" />';
echo '</li><!--end slide-->';
endif; endforeach; endif;
しかし、今、私はそのページに何もない白のページだけを手に入れています!どうしてこれが起こっているのか、どうすればこれを修正できるのか教えてください。サンスク
私が他のところで説明したように、あなたは簡単なフィルタでget_post_gallery()
またはget_post_gallery_images()
の画像サイズを修正することができます:
// Add a filter for full gallery size:
add_filter( 'shortcode_atts_gallery','wpse_full_size_gallery' );
$gallery = get_post_gallery( get_the_ID(), false );
// Remove the filter:
remove_filter( 'shortcode_atts_gallery','wpse_full_size_gallery' );
ここで、
function wpse_full_size_gallery( $out )
{
$out['size'] = 'full'; // Edit this to your needs! (thumbnail, medium, large, ...)
return $out;
}
これにより、添付ファイルIDからフルサイズの画像を取得するために追加のwp_get_attachment_image_src
呼び出しを実行する必要がなくなります。
したがって、最初のコード例は次のようになります。
<?php
while ( have_posts() ) : the_post();
if ( get_post_gallery() ) :
// Add a filter for full gallery size:
add_filter( 'shortcode_atts_gallery','wpse_full_size_gallery' );
$gallery = get_post_gallery( get_the_ID(), false );
// Remove the filter:
remove_filter( 'shortcode_atts_gallery','wpse_full_size_gallery' );
foreach( $gallery['src'] AS $src )
{
?>
<img src="<?php echo $src; ?>"
class="my-custom-class"
alt="Gallery image" />
<?php
}
endif;
endwhile;
?>
ギャラリー画像をフルサイズで表示します。
get_children()
関数は、与えられた1つまたは複数の投稿にアップロードされたすべての添付ファイルを取得しています。そのため、ほとんどの場合、ギャラリーのショートコードと同じ結果にはなりません。