質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

88.59%

WordPress5.4.2で作成したオリジナルワードプレステーマにおいてスライドショーをヘッダーに導入するためにslickを使いたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 236

sugawa

score 23

前提・実現したいこと

皆様こんにちは。
WordPress5.4.2で作成したオリジナルワードプレステーマにおいて
headerにスライドショーを配置したくて、slickを使おうと思っています。
まず、検証のため、普通にindex.htmlとslick用のCSSとjsファイルをダウンロードしてローカル環境で動作するか検証しましたら
しっかりスライドショーを実現できました。
しかしWordPressのテーマディレクトリ内で実行すると全く動作しませんので、これを解決したいと思っています。

自分で調べて実行したもの

WordPressにjsとcssを読み込ませるにはfunction.phpに記述するとあったので以下のコードで試しました

// wp_head()のjQueryを書き換える方法
function load_js() {
    //管理画面を除外
    if ( !is_admin() ){
        //事前に読み込まれるjQueryを解除
        wp_deregister_script( 'jquery' );

        //Google CDNのjQueryを出力
        wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js', array(), NULL, true );

        //自作スクリプトや、jQueryのライブラリも同様に読み込みます。
        // wp_enqueue_script( 'navbutton_script', get_template_directory_uri() .'/navbutton.js', array('jquery'), '', true );
        wp_enqueue_script( 'slick.min.js', get_template_directory_uri() .'js/slick.min.js', array('jquery'), '', true );
        wp_enqueue_script( 'main.js', get_template_directory_uri() .'js/main.js', array('jquery'), '', true );
    }
}
add_action( 'init', 'load_js' );

// CSSをfuctions.phpで読み込む
function add_files() {
// サイト共通のCSSの読み込み
wp_enqueue_style( 'mainslick-theme', get_template_directory_uri() . '/css/slick-theme.css', "", '' );
wp_enqueue_style( 'slick', get_template_directory_uri() . '/css/slick.css', "", '' );
wp_enqueue_style( 'style2', get_template_directory_uri() . '/css/style2.css', "", '' );
}
add_action( 'wp_enqueue_scripts', 'add_files' );


jsについては
main.jsとslick.min.jsを読み込ませています

CSSについては
slick-theme.cssとslick.cssとstyle2.cssを読み込ませています

そして、header.phpの<header></header>内に画像を配置しています。以下に示します

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
    <?php wp_body_open(); ?>

    <!-- ヘッダー -->
    <header>
        <ul class="slider">
            <li><img src="<?php echo get_template_directory_uri(); ?>/img/yama1.jpg" alt="slick-img"></li>
            <li><img src="<?php echo get_template_directory_uri(); ?>/img/yama2.jpg" alt="slick-img"></li>
            <li><img src="<?php echo get_template_directory_uri(); ?>/img/yama3.jpg" alt="slick-img"></li>
            <li><img src="<?php echo get_template_directory_uri(); ?>/img/yama4.jpg" alt="slick-img"></li>
        </ul>
        <a href="<?php echo esc_url(home_url('/')); ?>">
            <?php bloginfo('name'); ?>
        </a>
    </header>
    <!-- ナビゲーションメニュー -->
    <?php if (has_nav_menu( 'primary')): ?>
        <nav>  
            <?php wp_nav_menu( array(  'theme_location' => 'primary',  )); ?>  
        </nav>  
    <?php endif; ?>

最初にslick単体で検証してスライドショーが実現できた時のソースコードを以下に示します

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Now Amazing Webpage</title>
    <link rel="stylesheet" type="text/css" href="css/style2.css"/>
    <link rel="stylesheet" type="text/css" href="css/slick.css"/>
    <link rel="stylesheet" type="text/css" href="css/slick-theme.css"/>
</head>
<body>
  <ul class="slider">
    <li><img src="img/yama1.jpg" alt="slick-img"></li>
    <li><img src="img/yama2.jpg" alt="slick-img"></li>
    <li><img src="img/yama3.jpg" alt="slick-img"></li>
    <li><img src="img/yama4.jpg" alt="slick-img"></li>
  </ul>

      <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
      <script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
      <script type="text/javascript" src="js/slick.min.js"></script>
      <script type="text/javascript" src="js/main.js"></script>
      <script type="text/javascript"></script>
</body>
</html>


slick-theme.css

@charset 'UTF-8';
/* Slider */
.slick-loading .slick-list
{
    background: #fff url('./ajax-loader.gif') center center no-repeat;
}

/* Icons */
@font-face
{
    font-family: 'slick';
    font-weight: normal;
    font-style: normal;

    src: url('./fonts/slick.eot');
    src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
}
/* Arrows */
.slick-prev,
.slick-next
{
    font-size: 0;
    line-height: 0;

    position: absolute;
    top: 50%;

    display: block;

    width: 20px;
    height: 20px;
    padding: 0;
    -webkit-transform: translate(0, -50%);
    -ms-transform: translate(0, -50%);
    transform: translate(0, -50%);

    cursor: pointer;

    color: transparent;
    border: none;
    outline: none;
    background: transparent;
}
.slick-prev:hover,
.slick-prev:focus,
.slick-next:hover,
.slick-next:focus
{
    color: transparent;
    outline: none;
    background: transparent;
}
.slick-prev:hover:before,
.slick-prev:focus:before,
.slick-next:hover:before,
.slick-next:focus:before
{
    opacity: 1;
}
.slick-prev.slick-disabled:before,
.slick-next.slick-disabled:before
{
    opacity: .25;
}

.slick-prev:before,
.slick-next:before
{
    font-family: 'slick';
    font-size: 20px;
    line-height: 1;

    opacity: .75;
    color: white;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.slick-prev
{
    left: -25px;
}
[dir='rtl'] .slick-prev
{
    right: -25px;
    left: auto;
}
.slick-prev:before
{
    content: '←';
}
[dir='rtl'] .slick-prev:before
{
    content: '→';
}

.slick-next
{
    right: -25px;
}
[dir='rtl'] .slick-next
{
    right: auto;
    left: -25px;
}
.slick-next:before
{
    content: '→';
}
[dir='rtl'] .slick-next:before
{
    content: '←';
}

/* Dots */
.slick-dotted.slick-slider
{
    margin-bottom: 30px;
}

.slick-dots
{
    position: absolute;
    bottom: -25px;

    display: block;

    width: 100%;
    padding: 0;
    margin: 0;

    list-style: none;

    text-align: center;
}
.slick-dots li
{
    position: relative;

    display: inline-block;

    width: 20px;
    height: 20px;
    margin: 0 5px;
    padding: 0;

    cursor: pointer;
}
.slick-dots li button
{
    font-size: 0;
    line-height: 0;

    display: block;

    width: 20px;
    height: 20px;
    padding: 5px;

    cursor: pointer;

    color: transparent;
    border: 0;
    outline: none;
    background: transparent;
}
.slick-dots li button:hover,
.slick-dots li button:focus
{
    outline: none;
}
.slick-dots li button:hover:before,
.slick-dots li button:focus:before
{
    opacity: 1;
}
.slick-dots li button:before
{
    font-family: 'slick';
    font-size: 6px;
    line-height: 20px;

    position: absolute;
    top: 0;
    left: 0;

    width: 20px;
    height: 20px;

    content: '•';
    text-align: center;

    opacity: .25;
    color: black;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.slick-dots li.slick-active button:before
{
    opacity: .75;
    color: black;
}


slick.css

/* Slider */
.slick-slider
{
    position: relative;

    display: block;
    box-sizing: border-box;

    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;

    -webkit-touch-callout: none;
    -khtml-user-select: none;
    -ms-touch-action: pan-y;
        touch-action: pan-y;
    -webkit-tap-highlight-color: transparent;
}

.slick-list
{
    position: relative;

    display: block;
    overflow: hidden;

    margin: 0;
    padding: 0;
}
.slick-list:focus
{
    outline: none;
}
.slick-list.dragging
{
    cursor: pointer;
    cursor: hand;
}

.slick-slider .slick-track,
.slick-slider .slick-list
{
    -webkit-transform: translate3d(0, 0, 0);
       -moz-transform: translate3d(0, 0, 0);
        -ms-transform: translate3d(0, 0, 0);
         -o-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
}

.slick-track
{
    position: relative;
    top: 0;
    left: 0;

    display: block;
    margin-left: auto;
    margin-right: auto;
}
.slick-track:before,
.slick-track:after
{
    display: table;

    content: '';
}
.slick-track:after
{
    clear: both;
}
.slick-loading .slick-track
{
    visibility: hidden;
}

.slick-slide
{
    display: none;
    float: left;

    height: 100%;
    min-height: 1px;
}
[dir='rtl'] .slick-slide
{
    float: right;
}
.slick-slide img
{
    display: block;
}
.slick-slide.slick-loading img
{
    display: none;
}
.slick-slide.dragging img
{
    pointer-events: none;
}
.slick-initialized .slick-slide
{
    display: block;
}
.slick-loading .slick-slide
{
    visibility: hidden;
}
.slick-vertical .slick-slide
{
    display: block;

    height: auto;

    border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
    display: none;
}


style2.css

* {
    list-style: none;
    margin: 0;
    padding: 0;
}

img {
    width: 100%;
}

ul {
    width: 90%;
    margin: 0 auto;
}

.slick-prev::before,
.slick-next::before {
    color: black !important;
}


main.js

$('.slider').slick({
    dots: true
}); 


slick.min.js
すごく長くなるのですみませんがslickからダウンロードしたものを使ったということにします。
http://kenwheeler.github.io/slick/
画像に関しましては、imgフォルダを用意してその中に配置しています。

エラーが出たので追加

イメージ説明

補足情報(FW/ツールのバージョンなど)

WordPressをLocalbyFlywheelを使用した環境下で使っています。
ですので、検証環境は本番環境ではなくローカルです。

PC→マックブックプロ

何卒よろしくお願いいたします

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yuki84web

    2020/06/20 23:55

    ブラウザの開発者ツールのコンソールに何かエラーは出ていませんか?

    キャンセル

  • sugawa

    2020/06/21 00:03

    ありがとうございます!

    エラーが出ています
    質問に追加いたします

    キャンセル

回答 1

checkベストアンサー

+1

get_template_directory_uri() の後に'/'が要るのでは。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_template_directory_uri

注意: 末尾にスラッシュ( / )は含まれません。 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/06/21 00:37

    スラッシュが抜けておりました
    すごく助かりました。
    結構悩んでいたので本当に良かったです。
    ありがとうございました!!!

    キャンセル

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

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • jQueryに関する質問
  • WordPress5.4.2で作成したオリジナルワードプレステーマにおいてスライドショーをヘッダーに導入するためにslickを使いたい