本当にポインタを探しています。
私が求めている機能
基本的に、1つの投稿に最大6つの異なる画像を割り当てる機能が必要です。6つの画像すべてがsingle.php内で通常どおり表示されます。たとえば、ホームページでは、それらの画像の1つを、その投稿のページ読み込み時にランダムに表示したいと思います。
いくつかの質問
- これも可能ですか?
- このようなことを管理できるプラグインはありますか?
- 自分でやる場合、この種の機能を作成するにはどうすればよいですか?
本当にポインタを探しています。
私が求めている機能
基本的に、1つの投稿に最大6つの異なる画像を割り当てる機能が必要です。6つの画像すべてがsingle.php内で通常どおり表示されます。たとえば、ホームページでは、それらの画像の1つを、その投稿のページ読み込み時にランダムに表示したいと思います。
いくつかの質問
はい、それは可能ですが、それほど難しいことではありません。投稿を作成するときに画像をアップロードします。
次に、single.phpで、get_childrenを使用して投稿からすべての画像を取得します。
ループで仮定:
$images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=$post->ID' );
次のように出力します。
if ($images)
{
foreach ( $images as $attachment_id => $attachment ) {
echo wp_get_attachment_image( $attachment_id, 'full' );
}
}
ランダムな画像の場合、上記と同じget_childrenを使用できますが&numberposts=1
、args文字列に追加します。
または次のようなもの:
function fetch_random_img($postid='') {
global $wpdb;
if (empty($postid))
{
//we are going for random post and random image
$postid = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY RAND() LIMIT 1");
}
$imageid = $wpdb->get_var($wpdb->prepare("SELECT ID FROM wp_posts WHERE post_type='attachment' AND post_mime_type LIKE 'image/%' AND post_parent=$postid ORDER BY RAND() LIMIT 1"));
if ($imageid) {
echo wp_get_attachment_image( $imageid, 'full' );
}
else {
return false;
}
}
これにより、ランダムな画像が1つだけ表示され、ランダムになります。一方、get_childrenは、order引数とorderby引数を追加しない限り、毎回同じ画像を取得します。これにより、出力される画像を変更できます。
div内で画像をエコーするには、次の関数を呼び出すだけです。
<div>
<?php fetch_random_img(); ?>
</div>
投稿ごとに、名前と値を含むカスタムフィールドを追加します。名前はImageURL1とし、値は画像のURLにすることができます。必要な数のカスタムフィールドを投稿に追加します。例:
次のコードを使用して、single.phpまたはループ内の他のファイルに出力します。
<?php $values = get_post_custom_values("ImageURL"); echo $values[0]; ?>
ホームページにロードするには、投稿をクエリしてから、index.php内の特定の名前のカスタムフィールド値を取得します。
<?php query_posts('cat=10') //your cat id here ?>
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
<a href="<?php $values = get_post_custom_values("LinkURL"); echo $values[0]; ?>" target="_blank"><img src="<?php $values = get_post_custom_values("ImageURL"); echo $values[0]; ?>" alt="<?php the_title(); ?>" /></a>
<?php endwhile; ?><?php endif; ?>
<?php wp_reset_query(); ?>
必要に応じて、ランダム化するか、カスタムフィールドをループすることができます。