【SWELL】記事スライダーを投稿・固定ページに表示させる方法

当ページのリンクには広告が含まれています。
初心者ブロガー

SWELLのトップページに表示することができる記事スライダーを投稿ページや固定ページの好きな場所に表示させることはできるんだろうか?実現可能ならその方法を教えてほしいです。

こういった疑問にお答えします。

本記事で学べること

  • 記事スライダーを投稿・固定ページの好きな場所に表示させる方法が分かる。

本記事を読むことで下記のような記事スライダーを表示させることができます。

カード型

サムネイル型

本記事の内容

SWELLで記事スライダーを投稿・固定ページに表示させる方法

以下の順で解説していきます。

  • トップページ以外でも「Swiper」を使えるようにする
  • SWELLブロックの「投稿リスト」を挿入して条件を設定する
  • 投稿リストの高度な設定に「追加CSSクラス」を追加する
  • カスタムCSS & JSの「CSS用コード」に用意しているコードをコピペする
  • カスタムCSS & JSの「JS用コード」に用意しているコードをコピペする
  • プレビュー(投稿を表示)

トップページ以外でも「Swiper」を使えるようにする

管理画面メニューから、「外観」>「テーマファイルエディター」を選択します。

テーマを編集から、「テーマファイル」>「functions.php」を選択します。

※必ず子テーマのfunctions.phpで編集して下さい。

「/* その他の読み込みファイルはこの下に記述 */」直下に下記コードをコピペします。


wp_enqueue_script('swell_swiper');
wp_enqueue_style('swell_swiper');

これで、トップページ以外でもSwiperを使えるようになりました。

SWELLブロックの「投稿リスト」を挿入して条件を設定する

管理画面メニューから、「投稿」>「新規追加」を選択します。

(ブロック挿入ツールを切り替え)から、「ブロック」>「SWELLブロック」>「投稿リスト」を選択します。

投稿リストブロックをクリック後、(設定)から、「ブロック」>「Settings」>「表示設定」を開き以下の設定をします。

表示する投稿数:「8」にします。 ※SWELLのトップページに表示できる記事スライダーの最大数に合わせています。

  • レイアウトを選択:「カード型」または「サムネイル型」を選択します。 ※「カード型」と「サムネイル型」を想定してCSSの調整を行っているためです。
  • 投稿の表示順序:お好みでOKです。 ※今回は「ランダム」を選択しています。
  • 各種表示設定:お好みでOKです。
  • カテゴリー表示位置:お好みでOKです。
  • タイトルのHTMLタグ:デフォルトの「h2」または「div」で良いかと。
  • 最大カラム数(PC):表示に影響しないのでどれを選択してもOKです。
  • 最大カラム数(SP):表示に影響しないのでどれを選択してもOKです。
  • 抜粋文の文字数(PC):お好みでOKです。
  • 抜粋文の文字数(SP):お好みでOKです。
  • MOREリンクの表示テキスト:記事スライダーなので空欄で良いかと。
  • MOREリンクのURL:記事スライダーが空欄なのでこちらも空欄で。
  • 最後の投稿を非表示にするかどうか:表示に影響しないのでどちらを選択してもOKです。

投稿リストの高度な設定に「追加CSSクラス」を追加する

表示設定が終了後、「高度な設定」を開き下記を追加します。

  • swiper ※必須
  • swiper-postListWrap ※変更可能(ただし、カスタムCSS & JSのswiper-postListWrapの部分も同じにする必要がある)

例)高度な設定のswiper-postListWraparticleListBlockに変更した場合:「CSS用コード」と「JS用コード」の全てのswiper-postListWraparticleListBlockに書き換える必要があります。

カスタムCSS & JSの「CSS用コード」に下記コードをコピペする


/* 共通 */
.swiper-postListWrap .p-postList {
	flex-wrap: nowrap;
	margin: 0;
}

/* カード型 */
.swiper-postListWrap .-type-card .p-postList__item {
	padding: 0;
}
.swiper-postListWrap .swiper-pagination-bullet {
    background: currentcolor;
    color: inherit;
}

/* サムネイル型 */
.swiper-postListWrap .-type-thumb .p-postList__item {
	padding: 0;
}
.p-postList.-type-thumb + .swiper-pagination.swiper-pagination-clickable.swiper-pagination-bullets.swiper-pagination-horizontal {
	bottom: -4.5px;
}

カスタムCSS & JSの「JS用コード」に下記コードをコピペする


// 親要素を選択
const elmPostListWrap = document.querySelector('.swiper-postListWrap');
const elmSwiper = elmPostListWrap.firstElementChild;

// 'swiper-postListWrap'の最初の子要素に'swiper-wrapper'クラスを追加
elmSwiper.classList.add('swiper-wrapper');

// 'swiper-wrapper'の全ての子要素に'swiper-slide'クラスを追加
Array.from(elmSwiper.children).forEach(child => {
    child.classList.add('swiper-slide');
});

// 'swiper-pagination', 'swiper-button-prev', 'swiper-button-next'要素を作成して追加
['swiper-pagination', 'swiper-button-prev', 'swiper-button-next'].forEach(className => {
    const element = document.createElement('div');
    element.classList.add(className);
    elmPostListWrap.appendChild(element);
});

// Swiperを初期化
const swiper = new Swiper('.swiper-postListWrap', {
    loop: true,
    slidesPerView: 1, // スライダーの枚数設定(SP)
    spaceBetween: 16, // スライド間の余白(SP)
    centeredSlides: true, // 対象のスライドを中央寄せするかどうか
    speed: 1500, // スライドのアニメーション速度
    breakpoints: { // レスポンシブ対応
        960: {
            slidesPerView: 3, // スライダーの枚数設定(PC)
            spaceBetween: 16 // スライド間の余白(PC)
        }
    },
    autoplay: {
        delay: 5000, // スライドが切り替わる間隔
        disableOnInteraction: false // スライダーを操作したときに自動再生を止める
    },
    pagination: { // ページネーションを表示する
        el: '.swiper-pagination',
        type: 'bullets', // ページネーションの種類
        clickable: true // ページネーションをクリックできるかできないか
    },
    navigation: { // 矢印ナビゲーションを表示する
        nextEl: '.swiper-button-next', // 次へボタン
        prevEl: '.swiper-button-prev' // 前へボタン
    },
});

プレビュー(投稿を表示)

「投稿を表示」または「(プレビュー)」>「新しいタブでプレビュー」を選択します。

投稿が表示されました。

※分かりやすいように記事スライダーに枠を付けているだけで、実際には付いていません。

冒頭で紹介した動画の通りになっていれば完成です。

以上で解説を終わります。

最後まで読んで頂きありがとうございました。

本記事が読者の疑問を解決する役に立つと幸いです。

また、色々と触ってみることで実装の幅を増やして頂ければと思います。

おわり。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
本記事の内容