Задать вопрос
MaximusDem
@MaximusDem
Начинающий разработчик

Как вывести номер (именно номер) картинки галереи товара Woocommerce?

Здравствуйте, уважаемы форумчане! Возникла у меня задача вывести в галерее одиночного товара alt у картинки товара виде "Название товара + Фото(х)", где x - номер картинки в галерее товара. Сайт на Woocommerce.
Название я вывел, в принципе, быстро
add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);
function change_attachement_image_attributes($attr, $attachment) {
    global $post;
    if ($post->post_type == 'product') {
		$num = "Номер картинки";
		$title = $post->post_title;
        $attr['alt'] = sprintf(" %s  Фото - %s.",$title,$num);
        $attr['title'] = $title;
    }
    return $attr;
}

Все вроде работает и выводит
5c5b3e6247b24294663896.jpeg
Вопрос в чем - как вывести вместо $num = "Номер картинки"; Именно номер картинки галереи (1, 2, 3 и т.д в зависимости от количества картинок в галерее товара). Копал на
<a href="https://codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%D0%BC/get_post"></a>
, но там в списке возвращаемых полей для нужного мне результата ничего не нашел. Подскажите, пожалуйста, все мозги уже сломал.

UPD 7.02.19

Спасибо огромное Пычеву Анатолию!
Про статическую функцию я и не подумал, городил огромные конструкции с вызовом id картинки и т.д. А все оказалось так просто!
Окончательный вариант кода получился таким
add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);
function change_attachement_image_attributes($attr, $attachment) {
    global $post;
    if ($post->post_type == 'product') {
		$title = $post->post_title;
		static $num = 0;
		$num++;
        $attr['alt'] = sprintf("Фото %d - %s.",$num,$title);
    }
    return $attr;
}

И все отлично работает. Сео радуется, все пляшут и танцуют)
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Создай внутри функции статическую переменную и увеличивай ее на единицу в каждом вызове
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы