1

Looking for any pointers really.

The functionality I'm after

Basically I'd like to have the functionality to assign up to 6 different images to one single post. All 6 images will be displayed as normal within single.php. On the homepage, for example, I'd then like one of those images to be randomly displayed on page load for that post.

A couple of questions

  1. Is this even possible?
  2. Is there a plugin that can manage this sort of thing?
  3. If I were to do it myself how should I go about creating this sort of functionality?
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;
    }

    }

这只会给你一个随机图像,而且它是随机的,而 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 回答