включить пользовательские slideshow.php только в том случае, если есть показываемый продукт

#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, и, похоже, он работает, но спасибо всем!