1

本当にポインタを探しています。

私が求めている機能

基本的に、1つの投稿に最大6つの異なる画像を割り当てる機能が必要です。6つの画像すべてがsingle.php内で通常どおり表示されます。たとえば、ホームページでは、それらの画像の1つを、その投稿のページ読み込み時にランダムに表示したいと思います。

いくつかの質問

  1. これも可能ですか?
  2. このようなことを管理できるプラグインはありますか?
  3. 自分でやる場合、この種の機能を作成するにはどうすればよいですか?
4

2 に答える 2

4

はい、それは可能ですが、それほど難しいことではありません。投稿を作成するときに画像をアップロードします。

次に、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>
于 2012-05-22T19:21:42.200 に答える
0

投稿ごとに、名前と値を含むカスタムフィールドを追加します。名前は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(); ?>

必要に応じて、ランダム化するか、カスタムフィールドをループすることができます。

于 2012-05-22T19:04:16.513 に答える