Решено: как сгенерировать заголовок и текст в пользовательской теме WordPress - PullRequest
1 голос
/ 05 июля 2019

Я создаю собственную тему WordPress без плагинов.Изображение заголовка для каждой страницы может быть различным, поэтому я использую панель инструментов для назначения изображения и вызываю функцию «get_header_image ()» в коде моей темы.Изображение заголовка отображается правильно, но альтернативный текст - нет.

Я написал следующий код:

function alt_text_display() {
    $header_id = get_header_image(get_the_ID());
    $alt = get_post_meta($header_id, 'wp_get_attachment_image_alt', true);
    echo $alt;
}

add_action( 'wp_enqueue_scripts', 'alt_text_display' );

Это не работает, вероятно, потому что get_header_iamge () не принимаетаргументы, верно?

Мой HTML выглядит так:

    <div class="hero_container">
          <img src="<?php echo( get_header_image() ); ?>" class="hero">
     </div>

Я задаю альтернативный текст изображения, когда загружаю его в медиатеку.Этот текст не отображается.Вместо этого отображается название сайта.Как отобразить альтернативный текст, который я установил в библиотеке мультимедиа?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Я понял это.Вот моя пользовательская функция

function alt_text_display() {

        $data =  get_object_vars(get_theme_mod('header_image_data'));
        $image_id = is_array($data) && isset($data['attachment_id']) 
                    ? $data['attachment_id'] : false;

        if ($image_id) {

            $image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true);
            return image_alt;

        }

    }

    add_action( 'wp_enqueue_scripts', 'alt_text_display' );

Вот мой HTML:

<div class="hero_container">
                    <img src="<?php echo( get_header_image() ); ?>" alt="<?php echo( alt_text_display() ); ?>"  class="hero">
                </div>
1 голос
/ 05 июля 2019

Похоже, вы забыли добавить атрибут "alt" в html и вызвать функцию внутри него.

<div class="hero_container">
      <img src="<?php echo( get_header_image() ); ?>" alt="<?php display_alt_text(); ?>" class="hero">
 </div>

Или вы можете использовать wp_get_attachment_image внутри html для вывода изображения:

<?php echo wp_get_attachment_image( get_the_ID(), array('700', '600'), "", array( "alt" => "My image alt text here" ) );  ?>
...