【问题标题】:Display random background photograph AND the name of the photographer显示随机背景照片和摄影师姓名
【发布时间】:2016-09-13 08:00:19
【问题描述】:

我正在尝试使用来自特定图像选择的随机图像作为网页(Wordpress 网站)的背景照片。棘手的部分是我还需要显示拍摄照片的摄影师的姓名。

我的 PHP 知识非常基础,所以我不知道如何处理这个问题。我在网上找到了一个简单的脚本,可以从目录中提取随机图像,效果很好,但是我有哪些选择来检索照片来源?我应该以某种方式创建一个文本文件并从那里提取数据吗?我怎样才能将照片与摄影师的名字“联系起来”?

这是我提到的获取图像的脚本:

<?php

$root = get_stylesheet_directory_uri();
$dir = $root . "/images/bgs/";
$random = rand(1,22);

echo $root . "/images/bgs/bg_" . $random . ".jpg"; ?>

感谢您的帮助!

额外挑战:

rand(1,22) 中的 22 是 $dir 中的图像总数。如何使其动态化,以便在向目录中添加更多图像时,不必手动更新它?

额外的额外挑战

有没有办法确保同一张图片不会被连续拉两次,或者甚至每 5 次?

【问题讨论】:

  • 照片来源存储在哪里?
  • 您可以通过 Wordpress 媒体上传器上传图片,然后使用标题、说明或描述字段来保存您的信用信息。
  • 创建一个关联数组['my_name'=&gt;'my_photo_url'],然后使用mt_rand() 获取随机照片和摄影师姓名
  • 嗨@ImmortalDude,感谢您将我引向正确的方向,关联数组是我最终使用的解决方案。

标签: php wordpress image random


【解决方案1】:

我只能告诉你,我会怎么做......

  1. 添加新用户。 该用户仅用于上传图片。完全正常的方式,在 wp-admin 中使用 wordpress 媒体上传器。

  2. 添加钩子

    $args = 数组( 'author' => $author_id, // 替换为作者 id 'post_status' => '任何', 'post_type' => '附件' ); $query = new WP_Query($args);

取自这里:https://wordpress.stackexchange.com/questions/189967/how-to-display-all-images-uploaded-by-an-author(所有归功于@jaroslav svetlik :D)

  1. 现在您可以循环播放该用户上传的所有图片。使用它来获取背景图像。

  2. 现在您有了图像的 ID,您可以请求图像的元数据。 FE 描述。您可以将作者姓名添加到描述字段并相应地输出。

我会这样做。没有代码示例,因为您似乎知道自己在做什么。如果这个答案对你有帮助,请标记它;-) 谢谢!

额外挑战现在不再是挑战,因为您正在使用常规流程并检查用户。所以 WP 会知道是否有更多图像;-)

Extra Extra挑战有点棘手,也许我只是想复杂一点?这又是我要做的:

用 JS 设置一个新的 localStorage 项目(就像一个 cookie,但更酷)。作为值,我将设置当前选择的图像 ID。在设置背景图像之前,我现在将检查随机挂钩获得的 id 是否 = 保存的 ID。如果是 -> 生成新 ID,如果为假 -> 显示图像并用当前/新 ID 覆盖 localStorage。

一切顺利。

【讨论】:

  • 嗨@ThomasB,感谢您的帮助!我喜欢这个解决方案,但我不确定第 3 点)。我的意思是,一旦我构建了一个自定义查询来获取图像,我该如何编辑上面的脚本来获取随机图像?毕竟我确实需要一些代码:)
  • 嘿 Bankitalia - 今天我很着急,明天让我看看。希望这已经足够快了......但是意大利......你也应该下班了 - 明天见! ;) 如果我忘记了,请再次触发我。
【解决方案2】:

尽管@ThomasB 的回答看起来不错,但我最终还是探索了@Immortal Dude 提出的关联数组想法,结果证明它更适合我的需求。

您可以在此处阅读有关解决方案的更多信息:How to echo values of an associative array returned by function(我在此过程中遇到了一些麻烦,所以我问了一个额外的问题)。

希望这对任何人都有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多