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

时间:2018-03-30 17:34:32

标签: php wordpress unique-id

我试图在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;
}

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

看起来你已经有了一个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网站,但这对我们的非编程内容创建者来说更方便。然后我们的任何网站都需要在编程方面进行繁重的工作,我们只需使用wordpress模板化前端,在后端使用Wp页眉和页脚。然后通过slug从帖子中拉出我们想要的后端内容,并将其与我们的自定义CodeIgniter设置混合。因此,我们的大部分编程都是在wordpress之外完成的,但如果有意义的话仍然以wordpress为主题。

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