Intereting Posts
Как выбивать пользовательскую таксономию? Невозможно получить «has_sub_field ()» для работы в условном Ссылка «Читать дальше» не отображается, когда длина сообщения находится под длиной выдержки Как обновлять «modified_time» сообщения ТОЛЬКО при изменении контента? Как передать шаблон url в javascript в области ADMIN моей темы? не могу загрузить медиа в мой блог WordPress Bootstrap modal с сообщением jQuery Кнопка массового действия wp_list_table не работает – нет отправки wp_get_attachment_image () не отображает сообщения, даже если wp_get_attachment_url () echo correct urls Добавить аргументы в get_the_terms для пользовательских типов сообщений Изменение ограничения имени пользователя с четырех до менее символов is_home и is_frontpage всегда верно Форма входа пользователя вне формы wp-login по умолчанию Добавьте заголовок, сообщение и категорию, такие как add_post_meta и update_post_meta Параметр Pass для фильтра upload_dir

wp_get_attachment_image_src () работает с индексом, но не в архивах

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

<?php $page_id = get_queried_object_id(); ?> <?php $thumbs_array = wp_get_attachment_image_src( get_post_thumbnail_id($page_id), 'large' ); ?> <?php $large_thumb = $thumbs_array[0]; ?> 

и поместите значение $large_thumb в соответствующий тег как data-* , например:

 <div class="img lightbox-trigger" data-large-thumb="<?php echo $large_thumb ?>"> <?php the_post_thumbnail('thumbnail'); ?> </div><!-- .img .lightbox-trigger --> 

И я показываю это в лайтбоксе, используя фрагмент jQuery.

Теперь по индексу все работает отлично и прекрасно. Но когда я проверяю архивные страницы, это не работает, как должно. Я проверяю сгенерированный исходный код и вижу, что data-large-thumb на архивах Empty !, где в индексных data-large-thumb имеет адрес большого размера Thumbnail.

Странно, нужна разметка, get_template_part из того же файла, используя get_template_part . Я имею в виду, когда я проверяю index.php и archive.php оба имеют

 <?php get_template_part( 'col-h' );?> 

который загружает коды из одного и того же файла, но этот же файл возвращает значение по index и ничего в archive , когда я var_dump($large_thumb) NULL . Это странно, я думаю!

Сгенерированные результаты на index.php :

 <div class="img lightbox-trigger" data-large-thumb="http://example.com/wp-content/uploads/2016/12/Desert-1024x768.jpg"> <img src="http://example.com/wp-content/uploads/2016/12/Desert-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" width="150" height="150"> </div> 

и на archive.php :

 <div class="img lightbox-trigger" data-large-thumb=""> <img src="http://example.com/wp-content/uploads/2016/12/Desert-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" width="150" height="150"> </div> 

Обновление I var_dumped эти 3 связанные переменные, чтобы знать, что они возвращают. По индексу:

 $page_id returns 0 $thumbs_array return correct array containing url, width, height, etc $large_thumb returns url of large thumbnail 

и все работает отлично по index . но на archive страницах:

 $page id returns proper value; 2, 3, 8, 10 or whatever the ID is $thumbs_array returns `bool(false)` $large_thumb returns`NULL` 

Таким образом, похоже, проблема связана с wp_get_attachment_image_src которая, к wp_get_attachment_image_src , не работает в архиве. Есть ли какая-либо другая функция WP, которую я должен использовать? почему он возвращает False?

Что мне здесь не хватает?

И, пожалуйста, дайте мне знать, если какая-либо дополнительная информация необходима для решения этой проблемы.

Благодарю.

Solutions Collecting From Web of "wp_get_attachment_image_src () работает с индексом, но не в архивах"

get_queried_object_id вернет идентификатор для объекта, который запрашивается (очевидно). На архивных страницах это будет идентификатор архива – если у вашего архива нет эскиза, вы не получите изображение.

В зависимости от того, где вы устанавливаете переменную $large_thumb , вы должны полностью опустить идентификатор (если он используется в цикле), используя get_the_post_thumbnail_url() .

Если вы разместите свой код прямо над кодом для отображения изображения, он должен работать:

 <?php $large_thumb = get_the_post_thumbnail_url(null, 'large'); // Notice the null-value, instead of providing a post ID or object, will default to the current global $post. ?> <div class="img lightbox-trigger" data-large-thumb="<?php echo $large_thumb ?>"> <?php the_post_thumbnail('thumbnail'); ?> </div><!-- .img .lightbox-trigger -->