如何为 wordpress 中的每个附件图像创建一个唯一的 ID?

How to create an unique id for each attachment image in wordpress?

我试图在 wordpress 中创建一个用于拇指旋转的函数,我使一切正常,但我堆栈在我的 js 文件中所需的唯一 ID 上。

所以这是我的 php 函数,但它不会随机显示不同的 ID,它始终为创建的所有缩略图显示相同的 ID。

function thumb_rotation(){
    global $post;
    $uniqueID = 'thumb_';
    $characters = array_merge(range('a','z'), range('0','9'));
    for ($i = 0; $i < 6; $i++) {
    $rand = mt_rand(0, count($characters)-1);
    $uniqueID .= $characters[$rand];
    }
        $images = get_post_meta( $post->ID, 'image_rotator', true );
        $size = 'thumb-video';
        if( $images ):
            foreach( $images as $image ):
                        echo '<span class="mb">';
              echo wp_get_attachment_image($image, $size, false, array('title' => '', 'alt' => '', 'class' => 'mvThumb', 'id' => $uniqueID));
                        echo '</span>';
                endforeach;
            endif;
}

知道我在这里做错了什么吗? 谢谢!

您的 ID 生成器在图像循环之外。

看来你已经有了一个UniqueID,只是你没有意识到。

我认为至少,我对 wordpress 的工作不多,但是这个 WP 函数的定义。

 wp_get_attachment_image( int $attachment_id, string|array $size = 'thumbnail', bool $icon = false, string|array $attr = '' )

看起来第一个参数是数据库中图像的 ID。在你的代码中你有这个作为

  echo wp_get_attachment_image($image,  ..)

因此,如果我对此是正确的,那么 $image 应该是一个整数,它应该是图像的主键,在设计上它已经是一个唯一的 ID。

现在要提到的一件事是 Javascript/HTML 元素 ID 不应以数字开头。我不确定这是否仍然正确,但我记得前段时间是这样(也许我上次检查是在 8 年前,哈哈),所以我从不以数字开头。所以我的建议是只为该 ID 添加前缀。像这样:

  $imageID = "image_{$image}";

因此,如果 $image 值为 345,这也是数据库中的 Pkey,那么您的元素 ID 将为 image_345。因为这是主键,所以没有其他图像具有相同的 ID(除非它是相同的图像)。那就是如果我以正确的方式思考它。正如我所说的,我对 wordpress 的了解不多。

我们有一些 wordpress 网站,但这对我们的 non-programer 内容创建者来说更方便。然后我们的任何网站需要在编程方面进行繁重的工作,我们只需使用 wordpress 模板化前端,在后端使用 Wp 页眉和页脚。然后通过 slug 从 post 中提取我们想要的后端内容,并将其与我们的自定义 CodeIgniter 设置混合。所以我们的大部分编程都是在 wordpress 之外完成的,但如果有意义的话,仍然以 wordpress 为主题。

抱歉,我缺乏 wordpress 能力的理由比它应该的要长一点。我们发现我们要么几乎不需要自定义代码,要么需要大量自定义代码。在这种情况下,在 WP 之外进行操作要容易得多。