Как создать уникальный идентификатор для каждого изображения вложения в WordPress?

Я пытаюсь создать функцию для вращения большого пальца в WordPress Я все работаю, но я стек на уникальный идентификатор, который требуется в моем файле JS.

Так что это моя функция php, но она не показывает случайно другой идентификатор, она всегда показывает один и тот же идентификатор для всех созданных миниатюр.

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;
}

Есть идеи, что я здесь делаю не так?
Благодарю вас!

0

Решение

Ваш генератор идентификаторов находится за пределами вашего цикла изображений.

0

Другие решения

Похоже, у вас уже есть UniqueID, вы этого не понимаете.

Я думаю, по крайней мере, я не много работаю с WordPress, но определение для этой функции WP.

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

Похоже, первый аргумент — это идентификатор изображения из базы данных. В вашем коде у вас есть это как

  echo wp_get_attachment_image($image,  ..)

Так что, если я прав в этом, то $image должно быть целым числом, и это должен быть первичный ключ изображения, который по своему дизайну уже является уникальным идентификатором.

Теперь следует упомянуть, что идентификаторы элементов Javascript / HTML не должны начинаться с цифры. Я не уверен, что это все еще верно, но я помню, что так было некоторое время назад (может, я последний раз проверял это 8 лет назад, смеется), поэтому я никогда не начинаю их с цифр. Так что я предлагаю просто поставить этот идентификатор перед префиксом. как это:

  $imageID = "image_{$image}";

Так что если $image значение 345, которое также является Pkey из базы данных, тогда ваш идентификатор элемента будет image_345, И поскольку это первичный ключ, никакое другое изображение никогда не будет иметь такой же идентификатор (если это не то же изображение). Это если я думаю об этом правильно. Как я уже сказал, я не копаюсь в WordPress.

У нас есть несколько WordPress сайтов, но это больше удобство для наших непрограммистов. Затем на любом из наших сайтов, которые требуют тяжелой работы на стороне программирования, мы просто шаблонируем интерфейс с помощью WordPress, используем заголовок Wp и нижний колонтитул для бэкэнда. А затем извлеките содержимое, которое мы хотим для бэкенда из поста, слизнем и смешайте его с нашей пользовательской настройкой CodeIgniter. Таким образом, большая часть нашего программирования выполняется за пределами WordPress, но все еще поддерживается WordPress, если это имеет смысл.

Извините, что оправдание моего отсутствия WordPress было немного дольше, чем следовало бы. Мы находим, что нам почти не нужен пользовательский код, или нам нужна его тонна. В этом случае гораздо проще сделать это за пределами WP.

0

По вопросам рекламы [email protected]