Добавить alt-tag в слайдер - Wordpress - PullRequest
0 голосов
/ 21 мая 2018

Для WordPress текущая тема, с которой я работаю, не имеет alt-тегов, указанных для изображений слайдера.Так как разработчики не признают, что это проблема с темой (а скорее, выбор не использовать alt-тэги), я не могу получить от них никакой помощи.

Итак, я нашел код, который выводит тег img для каждого слайда.Однако фактического вывода здесь нет, поэтому я не могу добавить тег alt вручную в код.

Это часть, которая отображает слайды:

function render_slideshow(){
    if(post_password_required($this->post_id)){ return false; }
    $output = "";
    $i = 0;
    $output .= $this->before_container_html;
    if($this->slide_number){

        $output .= '<div class="slideshow_container '.esc_attr($this->slide_container_class).' slide_layout_'.esc_attr($this->options['slideshow_layout']).'" id="'.esc_attr($this->slide_container_id).'flex" '.esc_attr($this->additional_attr).'>';
        $output .= $this->custom_header_html;
        $output .= '    <ul class="'.esc_attr($this->slide_ul_class).' slide_'.esc_attr($this->slide_type).'">';
        $output .= $this->before_elements;
        foreach($this->slides as $slide):

            $i++;
            $image = "";
            if(!empty($slide['attachment_id']))
            {   
                $m_d = '';
                if(isset($this->media_img_data[$i]) && !empty($this->media_img_data[$i]))
                    $m_d = $this->media_img_data[$i];
                $image_string = codeless_image_by_id($slide['attachment_id'], $this->img_size, 'image', $m_d); 
                if(!$image_string) $image_string = $slide['attachment_id'];
                if(isset($slide['url']) && $slide['url'] != 'http://')
                {
                    $image = "<a href='".esc_url($slide['url'])."'>".$image_string."</a>";
                }else
                    $image = $image_string;
            }

            $output .= "<li class='".esc_attr($this->slide_element_class)." slide_element slide".$i." frame".$i."'>";
                if(!is_array($this->before_render_media))
                    $output .=           $this->before_render_media;
                else
                    $output .=           $this->before_render_media[$i];
                $output .=           $image;
                $output .=           $this->after_render_media;
                if(isset($slide['title']) && strlen($slide['title']) > 1){
                    $output .= $this->after_render_media; $output .= '<div class="captionss">';
           $output .= '<p class="flex-caption" data-effect-in="fadeInLeft" data-effect-out="fadeOutRight"><span>'.esc_attr($slide['title']).'</span></p>';
                       if(isset($slide['description']) && strlen($slide['description']) > 1)
            $output .= '<p class="flex-caption" data-effect-in="fadeInLeft" data-effect-out="fadeOutRight"><span>'.esc_attr($slide['description']).'</span></p>';
           $output .='</div>';
        }
            $output .= "        </li>";




        endforeach;
        $output .= $this->after_elements;
        $output .= "    </ul>";
        $output .= $this->custom_footer_html;

        $output .= "</div>";
        $output .= $this->after_container_html;

    }
    return $output;

}

Строка, которая отображает фактическое изображение, выглядит так:

                   $image = "<a href='".esc_url($slide['url'])."'>".$image_string."</a>";

Ссылка на указанную строку изображения простовыше этой линии.Но я понятия не имею, как реализовать Alt там.Так как он берет данные из других мест, но я понятия не имею, где это найти.

Изображение отображается онлайн как

<img src='https://praktijk-kerngezond.nl/wp-content/uploads/2014/09/foto_kinderdietist_kerngezond-e1526907903126.jpg' title='foto_kinderdietist_kerngezond' alt='' />

Как видите, alt-тег указан в коде, но пуст.Пока значение в медиатеке заполнено.

Кто-нибудь может указать мне правильное направление?Мне бы хотелось, чтобы в библиотеке мультимедиа был указан тег alt, но я также был бы рад статическому тегу all для всех слайдов.

Спасибо,

С уважением, Мирна

1 Ответ

0 голосов
/ 29 апреля 2019

Статическая опция, измените:

if(!$image_string) $image_string = $slide['attachment_id'];
if(isset($slide['url']) && $slide['url'] != 'http://')

на:

if(!$image_string) $image_string = $slide['attachment_id'];

$image_string = str_replace("alt=''", alt="YOUR STATIC ALT", $image_string);

if(isset($slide['url']) && $slide['url'] != 'http://')

или используйте $ slide ['title'], если не emtpy:

if(!$image_string) $image_string = $slide['attachment_id'];

$slide['title'] ? $alt = $slide['title'] : $alt = "YOUR STATIC ALT"; 
$image_string = str_replace("alt=''", alt="'.$alt.'", $image_string);

if(isset($slide['url']) && $slide['url'] != 'http://')
...