画像とギャラリーを追加する方法を私は知っています。ページがロードされるたびに、ギャレーから1枚の画像をランダムに表示する必要があります。
ページには一度に1つの画像しか表示されません。
これを行うためのプラグインや短いコードはありますか?ギャラリーをランダムにする方法は知っていますが、すべての画像が表示されます。
答え:
$args = array(
'post_type' => 'attachment',
'numberposts' => 1,
'orderby' => 'Rand',
'post_status' => null,
'post_parent' => get_the_ID(),
'post_mime_type' => 'image'
);
have_posts(); //must be in the loop
the_post(); //set the ID
$images = get_children( $args );
if ($images) {
foreach ( $images as $attachment_id => $attachment ) {
echo wp_get_attachment_image( $attachment_id, 'full' );
}
}
wp_reset_query();
get_children()
添付ファイル関数には、'orderby' => 'Rand'
パラメーターを使用する必要があります。
例えば:
$images = get_children( array(
'orderby' => 'Rand', // this is random param
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_parent' => get_the_ID(),
);
get_post_galleries()
を使って、ページ上のALLギャラリーからIDを取得することもできます余分なループは必要ありません。
// pull all the images from all galleries as unique IDs
$images = array_unique( explode( ",", implode( ",", wp_list_pluck( get_post_galleries( get_the_ID(), false ), 'ids' ) ) ) );
// randomize the order
shuffle( $images );
// pull the first id
list ( $id ) = $images;
// convert to image
echo wp_get_attachment_image( $id, 'full' );
参照
このコードは質問に答えます。ギャラリーを含むページまたは投稿では、ギャラリーから1つのランダムな画像を取り出してその画像のみを表示します。それはwordpressループの中に入ります(ここのコードは実際にはループを含みます)。
<?php //start the loop ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php // get the post's gallery ?>
<?php if ( get_post_gallery() ) : $gallery = get_post_gallery( get_the_ID(), false ); ?>
<?php //get gallery picture ids string seperates the ids and puts them in an array. ?>
<?php $pic_ids = explode(",", $gallery['ids']);?>
<?php // set a random int < to the size of the array containing ids.?>
<?php $i=Rand(0, count($pic_ids)-1);?>
<?php //get image corresponding to the random id?>
<?php echo wp_get_attachment_image( $pic_ids[$i],'full', false, '' ); ?>
<?php endif; ?>
<?php endwhile; else : ?>
<p><?php _e( 'Sorry, no page found.' ); ?></p>
<?php endif; ?>