カスタムタクソノミーのターム一覧をウィジェットにショートコードで編集
2017/03/11
カスタムタクソノミーのターム一覧をウィジェットに表示
カスタムタクソノミーのターム一覧を表示するショートコード
カスタムタクソノミーのターム一覧をウィジェットに編集するために必要なショートコードのソースコードは以下の通りです。
これを編集する場所は、functions.phpです。
functions.phpの詳しい解説ついては「WordPressの functions.phpがある場所」を参照してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// タクソノミーのターム一覧を表示するショートコード add_filter('widget_text', 'do_shortcode' ); function shortcode1Func ( $arg ) { extract ( shortcode_atts ( array ( 'text' => 's_taxonomy', ), $arg ) ); $html .= '<div id="mybox">'; $html .= wp_list_categories ( array ( 'title_li' => '', 'taxonomy' => $text, 'show_count' => 1, 'style' => false, 'depth' => 0, 'echo' => false )); $html .= '</div>'; return $html; } add_shortcode('get_taxonomy_list', 'shortcode1Func'); |
また、ウィジェットに編集するショートコードは、下記の様になります。
1 |
[get_taxonomy_list text=s_taxonomy] |
タクソノミーのターム一覧表示の解説
タクソノミーのターム一覧の「wp_list_categories()」関数
タクソノミーのターム一覧を取得する関数は 10行目の「wp_list_categories()」です。
カスタムタクソノミーの一覧を取得する処理そのものは、10行目の「wp_list_categories()」関数だけの理解で足りるのですが、上記のサンプルコードのように「wp_list_categories()」関数に対して、配列で条件を指定します。
title_li
タイトルを編集するか、しないかを指定できます。
デフォルトは「’title_li’ => ‘カテゴリー’」です。
「’title_li’ => ‘あいうえお’」の様にタイトルを指定すると、指定した文字列をタイトルとして編集することができます。
タイトルが必要ない場合は「’title_li’ => ”」を指定します。
style
カテゴリリストを「ulタグ」で囲むか、否かを指定します。
デフォルトは「’style’ => ‘list’」で「ulタグ」で囲む設定になっています。
これを設定したくない場合は「’style’ => ‘none’」を指定します。
taxonomy
取得するタクソノミーの slugを指定します。
上記のサンプルは、「s_taxonomy」という slugを設定しているタクソノミーに属するタームの一覧を取得することになります。
デフォルトは「category」で、指定しない場合は「カテゴリー」として登録されているタームの一覧を取得します。
show_count
各カテゴリ(ターム)のリンクの右に、そのカテゴリ(ターム)に属するの投稿数を表示するか、しないかを指定します。
デフォルトは「0(false)」の非表示。表示したい場合は「’show_count’ => 1」を指定します。
hide_empty
各カテゴリ(ターム)に属する投稿が 0件の場合にそのカテゴリを編集するか、否かを指定します。
デフォルトは「1(true)」で 0件の場合は非表示になる設定です。0件でもカテゴリを編集したい場合は「’hide_empty’ => 0」を指定します。
echo
取得した結果をその場所で出力するか、変数に代入するかを指定します。
デフォルトは「1(true)」で出力まで行います。変数に代入したい場合は「’echo’ => false」を指定します。
テンプレートに直接記述する場合はデフォルトのままで問題ありませんが、ショートコードで処理を組み込む場合は「’echo’ => false」を指定しないと、想定している場所とは違う場所に出力されてしまします。
depth
カテゴリ(ターム)の階層のどのレベルまでリストに出力するかを指定します。
デフォルトは「0」ですべてのカテゴリを取得できます。
「1」は最上位のカテゴリのみ。
「2」「3」...は、2階層目、3階層目までの指定になります。
「-1」はすべてのカテゴリを、インデントなしの形式で出力します。
number
表示するカテゴリ(ターム)の上限個数を指定します。
デフォルトは無制限です。
hierarchical
サブカテゴリを親階層より段をずらして編集するか、否かを指定します。
デフォルトは「1(true)」の入れ子になる表示です。「0(false)」を指定すると親子関係なく同じレベルで並びます。
ただし、実際の見え方は CSSを含めた設定に影響を受けます。
orderby
カテゴリ(ターム)の並び順の項目を指定します。
デフォルトは「name」です。
指定できる値は以下の通りです。
ID:カテゴリID(タームID)
name:カテゴリ名のアルファベット順(初期値)
slug:スラグ
count:カテゴリ内の投稿数
term_group:タームのグループ順
order
前項の「orderby」と一緒に利用し、カテゴリ(ターム)の並び順を指定します。
「ASC(昇順)」が初期値ですが、「DESC(降順)」も指定可能です。
show_option_none
表示するカテゴリ(ターム)がない場合に表示する代替のテキストを指定します。
デフォルトは「カテゴリーなし」です。
use_desc_for_title
カテゴリ(ターム)のリンクタグ(aタグ)に「title」属性を追加するか、否かを指定します。
デフォルトは「1(true)」です。
child_of
このパラメータで指定したカテゴリIDの子カテゴリのみ表示します。
exclude
指定したカテゴリをリストから除外する場合に指定します。
include
指定したカテゴリのみリストに表示する場合に指定します。
その他、feed、 show_option_all、 feed_type、 feed_image、 exclude_tree、 current_category、 pad_counts、 walkerのパラメータがありますが、詳しくはオフィシャルサイトをご覧ください。
https://wpdocs.osdn.jp/テンプレートタグ/wp_list_categories
タクソノミーの slugの指定
functions.phpに記述する 6行目の「s_taxonomy」と、ショートコードの引数として指定する「text=s_taxonomy」の「s_taxonomy」は、一覧させるタクソノミーの slugです。
作成したタクソノミーの slugを指定してください。
ショートコードの基本的な構成については、下記の記事に詳しく解説をしていますので参照してください。
WordPress投稿にPHPを記述するショートコードの使い方add_shortcode
ショートコードをウィジェットで使うための add_filter()
functions.phpに記述する 2行目の「add_filter()」関数は、ショートコードをウィジェットで使うための関数です。
この「add_filter()」関数の記述がないと投稿中では使えるショートコードも、ウィジェットでは使えません。
ウィジェットで使う場合にはこの「add_filter()」関数を忘れずに記述しておきましょう。
詳しくは、「WordPressのウィジェットでショートコードを使う方法add_filter」にも書いていますので参照してください。
一覧ページを記述するファイル
前項まででウィジェットにカスタムタクソノミーのターム一覧を表示する処理は完了なのですが、タクソノミーの各タームをクリックして各記事の一覧ページがどこに編集されるかの解説もしておきます。
基本的には、下記になります。
/{WordPressのルート}/wp-content/themes/{テーマ}/archive.php
これはデフォルトで存在する一覧ページで、特に指定しなければ全ての一覧ページはこのファイルをテンプレートとして一覧ページを表示します。
ですが、WordPressには簡単な設定でテンプレートを分けていく仕組みがありますのでご紹介しておきます。
下記の様に「category-****.php」「taxonomy-****.php」といったファイル名を付けたファイルを用意すると、下記の条件に従ってそのテンプレートファイルが使われます。
「archive.php」をコピーしてテンプレートファイルを作成していくといいでしょう。
- category-{slug}.php 特定のカテゴリだけのテンプレート
- category-{6}.php 1.同様特定のカテゴリ。こちらは IDで指定
- category.php カテゴリ共通のテンプレート
- archive.php カテゴリ、アーカイブ一覧など一覧ページ共通
- index.php すべての共通テンプレート
- taxonomy-{slug}-{term}.php 特定のタクソノミーの中の特定のタームだけのテンプレート
- taxonomy-{slug}.php 特定のタクソノミーだけのテンプレート
- taxonomy.php タクソノミー共通のテンプレート
- archive.php タクソノミー、アーカイブ一覧など一覧ページ共通
- index.php すべての共通テンプレート
※それぞれ上の方が優先的に適用されます。
カスタムタクソノミーが正しく動かない場合の対処方法
カスタムタクソノミーの一覧ページや、タクソノミーの中のタームの一覧ページなどが正しく表示されない不具合が発生する場合が多々あります。
原因は、パーマリンクの設定が反映されていないからです。
不具合の解消方法は、管理画面の「設定」-「パーマリンク設定」の画面で空更新(特に設定を変更せずに「更新を保存」をクリックすること)を実施することです。
パーマリンクの設定が「デフォルト」のままであれば問題は起こらないようですが、「デフォルト」以外の設定にしている場合は、カスタムタクソノミー、および、カスタム投稿の設定を変更した場合は、リダイレクトの処理に変更を反映させるために「パーマリンク設定」を空更新をする必要があるようです。
カスタム投稿とカスタムタクソノミーの関連記事
カスタムタクソノミーを設定するプラグインとして「Custom Post Type UI」がオススメです。
下記の記事では「Custom Post Type UI」の設定方法の解説と、そもそもカスタムタクソノミーの設定で行える項目の設定内容も解説をしています。
Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説
また、同じ「Custom Post Type UI」ではカスタム投稿も設定できるようになっています。
下記の記事では、カスタム投稿の設定方法とあわせて、カスタム投稿で設定できる項目の詳細解説をしています。
WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?
さらに、下記の記事では、そもそもカスタムタクソノミー、カスタム投稿、カスタムフィールドとはどういう使い方をするものなのか、について解説していますのであわせてご覧下さい。
Custom Post Type UIでカスタム投稿を設定し編集する方法解説
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
ショートコードで簡単解決!WordPress固定ページにカテゴリ一覧を編集する方法
ショートコードを使って固定ページや投稿に特定のカテゴリ一覧を編集する処理を作りました。プラグインなしで30行くらいのソースコピペで実現できます!
-
WordPressのバージョンアップをしたら「the_content」でコンテンツが表示されなくなった
「the_content」でコンテンツが表示されないのは仕様が変更されたためでプログラムの修正が必要です。
-
Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説
Advanced Custom Fieldsのアドオン・ギャラリーの解説記事。複数の画像を入力できる優れもので、画像のサイズ、容量などでの制限ができ、より厳密な管理が可能。
-
WordPressのウィジェットでショートコードを使う方法add_filter
WordPressのウィジェットでショートコードを利用するには add_filter、do_shortcodeの関数を利用する必要があります。
-
P3(Plugin Performance Profiler)で負荷が高いプラグインを調査し表示スピードアップ!
まずは正確に現状把握を!P3(Plugin Performance Profiler)を使ってプラグインの処理時間を確認!簡単操作で対応すべきプラグインが一目瞭然になります!
-
BackWPupでバックアップ・全体バックアップ具体的設定例
BackWPupその7。ファイル、DB全体をバックアップする具体的事例での説明です。
-
WP-PostRatingsでWordPressに自由度が高い口コミサイトを構築
口コミの評価点を投稿する機能に特化したプラグインで、多様なイメージと投稿方法が用意されていてサイトにあったイメージを選択できます。
-
Captchaを使って WordPressのコメントスパム対策をする
コメントスパム対策として入力させない対策の一つとしてCAPTCHAという方法がありそれを簡単に実装できるプラグインCaptchaの解説です。
-
WordPress プラグインのアップデート失敗でデータが消える事態が!
プラグインのアップデート失敗でデータが消失。不具合が起こる原因はあちこちにありますので常に慎重にバックアップをしましょう。
-
Advanced Custom Fieldsのカスタムフィールドの登録上限が max_input_varsに影響する問題の対処方法
Advanced custom Fieldsには登録できるフィールド数に上限があります。php.iniのmax_input_varsによる制限ですが、フィールドグループを分割することで解決できます。