【问题标题】:Wordpress - Multiple images per postWordpress - 每个帖子多张图片
【发布时间】:2012-05-29 07:27:42
【问题描述】:

真的在寻找任何指针。

我追求的功能

基本上,我希望能够将最多 6 个不同的图像分配给一个帖子。所有 6 张图像将在 single.php 中正常显示。例如,在主页上,我希望其中一张图片在该帖子的页面加载时随机显示。

几个问题

  1. 这可能吗?
  2. 有没有插件可以管理这种事情?
  3. 如果我自己来做,我应该如何着手创建这种功能?

【问题讨论】:

标签: php image wordpress custom-post-type image-management


【解决方案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;
    }

    }

这只会给你一张随机图片,而且它是随机的,而 get_children 每次都会拉出同一张图片,除非你添加 order 和 orderby 参数,这将允许你更改输出的图片。

要在 div 中回显图像,只需调用函数:

<div>
<?php fetch_random_img(); ?>
</div>

【讨论】:

  • ''post_type=attacenter code herehment&p' 的行是否有问题?看起来不太对劲?另外,当您使用代码输出它们时,那​​段代码到底在做什么?是在 single.php 中显示所有 6 张图像还是显示随机帖子,例如在 index.php 上?
  • 是的,当我单击大括号将代码放入代码块时发生这种情况,我已经将它取出到一个地方。无论如何,现在排序。
  • 所以你的代码会抽出single.php中的6张图片?我是否只是像往常一样上传我的图片并将它们插入到帖子中?原谅这些问题,只是对 PHP 没有信心。
  • 没有。您在添加帖子时照常上传图片,但不会将它们插入到帖子内容中。您只需点击保存然后发布。代码是在 single.php 中显示图像的内容。哦,我忘了。关于在页面加载时随机显示 - 在哪个页面加载时 - 单个帖子页面或另一个,以及图像需要在哪里/如何随机显示?
  • 好吧,随机图像功能确实适用于其他页面/帖子模板,而不是 single.php。在 single.php 上,我想抽出所有上传的图像。在其他模板上,我只想调用许多上传的图片中的一张。
【解决方案2】:

为每个帖子添加一个包含名称和值的自定义字段。您可以将名称设为 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(); ?>

如果需要,您可以对其进行随机化或循环访问自定义字段。

【讨论】:

  • 绝对不需要为此使用自定义帖子值
  • 感谢您的意见 :)
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 2011-12-28
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多