質問するログイン新規登録
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

Q&A

0回答

73閲覧

swiperの永続ループができない

nakatoshicraft

総合スコア1

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

0グッド

1クリップ

投稿2025/09/23 08:07

編集2025/09/23 08:36

0

1

実現したいこと

Wordpress内で swiper を 永続ループさせたい

発生している問題・分からないこと

よろしくお願いいたします。

swiperは稼働しているのですが、

<div class="swiper-slide">1枚目の画像</div> <div class="swiper-slide">2枚目の画像</div> <div class="swiper-slide">3枚目の画像</div> と書いた場合、3枚目の画像まで表示されると右が空白になり一旦画像の連鎖が終わり、ある程度流れるとその3枚目の次(右側)に1枚目の画像が現れて左にスライドし、次に2枚目の画像が現れて左にスライドし、を繰り返すようになります。その現れた画像の右側は空白で・・・、 という具合に、次々に画像が現れては来るのですが、一本の帯のように永続ループにはなりません。

画像の数を、2倍から5倍まで貼り付けてみたのですが結局、6枚なり15枚なりがスライドして終わったら右は空白になってしまい、1巡したら終わってその次に1枚ずつ次の画像が現れて左にスライドしてゆき右の空白は有ったままです。

下の画像のように、はじめは上のように画面全体を使って左にスライドしてくれているのですが、設定枚数が終わることになると、下のように、右側は空白になり、見えている右の画像がセンターあたりで現れて左にスライドしてまた右に新たな画像が現れて、の繰り返しです。

イメージ説明

イメージ説明

エラーメッセージ

error

1エラーメッセージは出ていません。

該当のソースコード

functions.php;

1function my_script_init() 2 3 //スワイパー読み込み 4 wp_enqueue_script('swiper', '//unpkg.com/swiper@11/swiper-bundle.min.js', "", "1.0.1", true); 5 6 wp_enqueue_style('swiper', 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css'); 7  8 //スワイパーここまで 9 10 11 wp_enqueue_style('style-css', get_template_directory_uri() . '/css/style.css', array(), '1.0.1'); 12 13 wp_enqueue_script('main-js', get_template_directory_uri() . '/js/script.js', array('jquery'), '1.0.1', true); 14} 15add_action('wp_enqueue_scripts', 'my_script_init');

script.js

1$(function () { 2 3//その他色々 4 5const swiper2 = new Swiper(".swiper2", { 6 direction: 'horizontal', 7 loop: true, 8 effect: "slide", 9 speed: 3000, 10 allowTouchMove: false, 11 spaceBetween: 34, 12 autoplay: { 13 delay: 0, 14 }, 15});

front

1<div class="slider"> 2 <div class="slider__inner"> 3 <div class="slider__slider"> 4 <div class="swiper2"> 5 <div class="swiper-wrapper"> 6 7 <div class="swiper-slide"> 8 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide01.jpg")); ?>" class="slide01-img" alt=""> 9 </div> 10 <div class="swiper-slide"> 11 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide02.jpg")); ?>" class="slide02-img" alt=""> 12 </div> 13 <div class="swiper-slide"> 14 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide03.jpg")); ?>" class="slide03-img" alt=""> 15 </div> 16 17 <div class="swiper-slide"> 18 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide01.jpg")); ?>" class="slide01-img" alt=""> 19 </div> 20 <div class="swiper-slide"> 21 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide02.jpg")); ?>" class="slide02-img" alt=""> 22 </div> 23 <div class="swiper-slide"> 24 <img src="<?php echo esc_url(get_theme_file_uri("/images/slide03.jpg")); ?>" class="slide03-img" alt=""> 25 </div> 26 27 </div> 28 </div> 29 </div> 30 </div>

style.css

1.slider { 2 width: 100%; 3 height: 440px; 4 margin-top: 101px; 5 position: relative; 6} 7 8.slider__inner { 9 display: flex; 10 position: relative; 11 width: 100%; 12 height: inherit; 13 object-fit: cover; 14 overflow: hidden; 15} 16 17.slider__slider, 18.swiper2-slide img { 19 aspect-ratio: 506/393; 20 width: 506px; 21 height: 393px; 22 object-fit: cover; 23} 24 25.swiper-slide img { 26 height: 100%; 27 width: 100%; 28 object-fit: cover; 29} 30 31.slide01-img { 32 height: 393px; 33 width: 506px; 34 object-fit: cover; 35} 36 37.slide02-img { 38 height: 393px; 39 width: 506px; 40 object-fit: cover; 41} 42 43.slide03-img { 44 height: 393px; 45 width: 506px; 46 object-fit: cover; 47} 48 49.swiper { 50 margin-left: auto; 51 margin-right: auto; 52 position: relative; 53 overflow: hidden; 54 list-style: none; 55 padding: 0; 56 z-index: 1; 57} 58 59.swiper-wrapper { 60 transition-timing-function: linear; 61} 62

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

swiperのカスタマイズ用オプションを.jsに順番に加筆してみたのですがどれを入れ込んでもうまくいきませんでした。(参照:https://junpei-sugiyama.com/swiper-option/)

他、様々なswiper解説記事を巡ったのですが、今のところ解決に至りません状況です。

尚、slidesPerView: , を入れてみたらどうかとのアドバイスをいただきましたところ、
このオプションを記述しない、または slidesPerView: 1,にしますと画像の大きさは希望通りになりますが、
slidesPerView: 3,にしますと下のように画像の大きさが小さくなってしまい、
slidesPerView: 4,のように数字を大きくしますと画像の大きさが、より小さくなってしまう、という現象が起こります。

イメージ説明
イメージ説明

補足

コードにおいて swiper2 となっているのは、1ページ内に3つのswiperを設置しているためです。
swiper1はfadeの効果をループさせ、swiper3はループを止めてページネーションボタンを押すことで左右に画像が横移動しそれぞれ画像を押下することで詳細(投稿)ページに移行する仕組みにしています。
swiper1とswiper3は正常に稼働しております。

画像がそれぞれ上下に凸凹しているのは、偶数番画像にmargin-topを指定しているデザイン指定によるものです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問