Nakkan Base

リンク

「もっと見る」の展開

このサイトで言えば「テンプレート」の部分。

最初は6個のテンプレートを表示させ、「もっと見る」をクリックでさらに6個のテンプレートが表示される。で、最後まで開いたら「閉じる」になり、それをクリックすると最初の状態に戻る。

という挙動をさせたかったので、jQueryを使うことにしました。

いくつかの方法を試しましたが、思い通りに動いてくれたのは下記のサイト様のコードです。(完璧!)

【jQuery】「もっと見るボタン」を押して2個ずつ表示

この最後の「//全部表示したらボタン削除」以降の部分を少し変えて、コードをカスタマイズ。

そして忘れてはいけないのが、cssとphpファイルの書き直し。

まず、私の場合はsection.phpのテンプレートのサブループ部分、’posts_per_page’ => -1, で全件表示させる必要がある。(全件表示ということで、_responsiv.scss記載のテンプレートのグリッドも書き換える必要があった)

それからcssは、is-hiddenというクラスにdisplay:none;を指定しなければならない。

つまり、全テンプレートをずらずらっと並べておいて、7番目以降は全て非表示にするというスタイルになりますね。

最後の「//全部表示したら」以降だけここに書いておきます。

var btn1 = $('.moreBtn');
var btn2 = $('.closeBtn');
 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
//全部表示したら
        if (hiddenLength === 1) {
          $(btn1).hide();//moreボタン削除
          $(btn2).show();//閉じるボタン表示
        }
      });
    });
    //「閉じる」ボタンで最初の6個表示に戻る
    $(btn2).on('click', function () {
      $(btn2).hide();//閉じるボタンを非表示
      $(btn1).show();//moreボタン表示に


      (function () {
        var addCount = 0;
  
        $(item).each(function () {
          if (addCount === 6) {
            $(this).addClass(className);
            return;
          }
          if (!$(this).hasClass(className)) {
            addCount++;
          }
        });
      }());
    });
  }());
});

ウィジェットのカテゴリーを全て表示させる

ウィジェットに「カテゴリー」をプルダウン表示で追加したけど、3つくらいしか表示されない。

これってどういうこと?

で、以下のファンクションが効きました。

functions.phpに記入

function hook_widget_categories( $args ){
$args['hide_empty'] = 0;
return $args;
}
add_filter( 'widget_categories_args', 'hook_widget_categories');
add_filter( 'widget_categories_dropdown_args', 'hook_widget_categories' );


ちなみにこれで、もし記事がない場合でも設定されたカテゴリーは表示されます。

今回お世話になったサイトさんは以下です。ありがとうございました。

WordPress】投稿の無いカテゴリーも全て表示させる【カテゴリウィジェット】

Advanced Custom Fields

「テンプレート」というフィールドを作ったけれど、そこに指定すべきカテゴリーが表示されなかった。

「テンプレート」というカテゴリーは必須だと思ったので、あれこれ検索して、あれこれfunctions.phpに書き足して…。

でも「カテゴリー」は全く現れてくれなかった。

諦めかけて、結局基本の基本に立ち返ることになったので書き留めておきます。

助けていただいたのは下記のサイト様。

『Advanced Custom Fieldsの全フィールドタイプを徹底解説』

「6−5.タクソノミー」という項目のところで、はたと思いついた。

「テンプレート」フィールドの「+フィールドを追加」→「カテゴリー」追加でいけました♪

子テーマの作成

なぜ「子テーマ」を作るかというと、オリジナルテーマを色々いじって無事自分好みにカスタマイズできたとしても、親テーマがアップデートされた途端にそれらがすべて無に期すという悲劇を防ぐために他なりません。

気に入ったオリジナルテーマでサイトを始めるときは、まず最初に子テーマを作成し、子テーマで運営するようにしましょう。

★手順1

「親テーマフォルダ」と同じ階層に、空の新規「子テーマフォルダ」を作る。

★手順2

「親テーマ」のstyle.cssをまるっとコピーして、新しく作った「子テーマ」フォルダの中に貼り付ける。

★手順3

そのstyle.cssをテキストエディタで開き、次のように書き換える。(必須なものだけにしました)

Theme Name:テーマ固有の名前 (‘〜 Child’がわかりやすい)

Template:親テーマが保存されているフォルダー(テーマ名ではなくフォルダー名を使用。これを記述しないと、テーマは子テーマとして機能しない)

Template Version:バージョン番号

注意したいのは、Template

ここは「親テーマ」のテーマ名ではなくフォルダ名が入るので、最初の一文字が大文字にならないようにする。

★手順4

functions.phpファイルを作り、テキストエディタで下記のように書き込む。

<?php
 add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
 function theme_enqueue_styles() {
     wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
 }

そして付け加えたい機能があれば、随時書き加えていく。

私の場合、これは常に書き加えておきたい。

/*==============================

固定ページカテゴリ追加用コード

==============================*/

add_action( 'init', 'my_add_pages_categories' ) ; 
function my_add_pages_categories()
{
register_taxonomy_for_object_type( 'category', 'page' ) ;
}
add_action( 'pre_get_posts', 'my_set_page_categories' ) ;
function my_set_page_categories( $query )
{
if ( $query->is_category== true && $query->is_main_query()){
$query->set( 'post_type', array( 'post', 'page', 'nav_menu_item' )) ;
}
}

以上です。

なお、次のサイトさんが非常に参考になりました。ありがとうございました。

WordPressで子テーマを作成する方法(詳細ガイド)
https://kinsta.com/jp/blog/wordpress-child-theme/#c