#javascript #php #wordpress #advanced-custom-fields
#язык JavaScript #php #wordpress #расширенные-настраиваемые-поля
Вопрос:
это мой самый первый пост здесь!
Итак, моя проблема в том, что я не хочу называть свой slideshow.php в моем page.php когда я не устанавливаю в нем изображение (или какое-либо значение), потому что оно выдает ошибки в консоли.
итак, как избежать ненужного вызова javascript, если нет показываемого продукта?
Большое спасибо!
вот пример из моего page.php где я хочу назвать это только в том случае, если есть рекомендуемый продукт:
lt;?php get_header(); if (is_front_page()) { include('slideshow.php'); }; ?gt;
И вот мой slideshow.php файл:
lt;div id="slideshow-container"gt; lt;?php $query = new WP_Query( array( 'post_type' =gt; 'product', 'posts_per_page' =gt; 5, 'product_tag' =gt; 'featured', 'order' =gt; 'DESC', ) ); while ($query-gt;have_posts()) : $query-gt;the_post(); ?gt; lt;?php $imgurl = get_field('slideshow_img'); $size = 'full'; if( $image ) { echo wp_get_attachment_image( $image, $size ); } ?gt; lt;article id="post-lt;?php the_ID(); ?gt;" lt;?php post_class( 'clearfix slides fade' ); ?gt; role="article"gt; lt;a href="lt;?php the_permalink(); ?gt;" style="background-image:url('lt;?php echo $imgurl ?gt;');" class="slideimage"gt;lt;/agt; lt;div class="container"gt; lt;div class="title-holder"gt; lt;h3 class="slide-title"gt;lt;a href="lt;?php the_permalink(); ?gt;"gt;lt;?php the_title(); ?gt;lt;/agt;lt;/h3gt; lt;/divgt; lt;/divgt; lt;div class="arrow-container"gt; lt;a class="prev" onclick="plusSlides(-1)"gt;amp;#10094;lt;/agt; lt;a class="next" onclick="plusSlides(1)"gt;amp;#10095;lt;/agt; lt;/divgt; lt;/articlegt; lt;?php endwhile; ?gt; lt;div class="slideshow-pager"gt; lt;span class="dot" onclick="currentSlide(1)"gt;lt;/spangt; lt;span class="dot" onclick="currentSlide(2)"gt;lt;/spangt; lt;span class="dot" onclick="currentSlide(3)"gt;lt;/spangt; lt;span class="dot" onclick="currentSlide(4)"gt;lt;/spangt; lt;span class="dot" onclick="currentSlide(5)"gt;lt;/spangt; lt;/divgt;
var slideIndex = 1; var timer; showSlides(slideIndex); window.addEventListener("load",function() { showSlides(slideIndex); timer = setInterval(function(){plusSlides(1)}, 4000); }) function plusSlides(n){ clearInterval(timer); if (n lt; 0){ showSlides(slideIndex -= 1); } else { showSlides(slideIndex = 1); } if (n === -1){ timer = setInterval(function(){plusSlides(n 2)}, 10000); } else { timer = setInterval(function(){plusSlides(n 1)}, 10000); } } function currentSlide(n){ clearInterval(timer); timer = setInterval(function(){plusSlides(n 1)}, 10000); showSlides(slideIndex = n); } function showSlides(n){ var i; var slides = document.getElementsByClassName("slides"); var dots = document.getElementsByClassName("dot"); if (n gt; slides.length) {slideIndex = 1} if (n lt; 1) {slideIndex = slides.length} for (i = 0; i lt; slides.length; i ) { slides[i].style.display = "none"; } for (i = 0; i lt; dots.length; i ) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className = " active"; } lt;/scriptgt;
Комментарии:
1.Маленькая точка
};
точка с запятой не требуется2. правда, спасибо 🙂
Ответ №1:
Хитрое решение : введите переменную js, если есть изображение
lt;?php if( $image ) { ?gt; lt;scriptgt; const imageExists = true;lt;/scriptgt; lt;?php echo wp_get_attachment_image( $image, $size ); } ?gt;
После того, как вы сможете использовать переменную imageExists в своем js-коде
Комментарии:
1. Я поместил весь сценарий js в цикл php while, и, похоже, он работает, но спасибо всем!