カスタムタクソノミーのターム一覧をウィジェットにショートコードで編集
2015/12/27
カスタムタクソノミーのターム一覧をウィジェットに表示
カスタムタクソノミーのターム一覧を表示するショートコード
カスタムタクソノミーのターム一覧をウィジェットに編集するために必要なショートコードのソースコードは以下の通りです。
これを編集する場所は、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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
タクソノミーの一覧をショートコードで編集・ソート機能付き・wp_list_categories
カスタムタクソノミーのターム一覧をショートコードで編集する方法の解説です。Category Order and Taxonomy Terms Orderを利用してソート機能を追加したバージョンです。
-
WordPressでダブルクォートなどの文字が自動変換?原因と対処方法
ダブルクォート、シングルクォート、HTMLタグなどが自動変換関数によって入力と違う形で表示されます。原因を2つの関数ごとに説明し、対応方法を3パターン提示します。
-
ショートコード+ウィジェットでサイドバーに人気記事を表示させる方法
WordPressのサイドナビゲーションに人気記事を編集する方法です。プラグインを使わずウィジェットにショートコードで任意のPostIDを指定することで編集する方法です。
-
WordPressの一覧ページのテンプレートの種類とファイルの設定
ファイル名に従って一覧ページのテンプレートは選択される。ルールに従ってファイル名を付けることで任意のカテゴリ、タクソノミーごとのテンプレートを指定可能。
-
ショートコードで簡単解決!カスタムフィールドでソート、抽出条件設定方法
ショートコードを使って固定ページや投稿に特定のカテゴリ一覧を編集する処理に、ソート条件、抽出条件も設定できる処理を作成。カスタムフィールドも条件に利用可。
-
get_categories、get_termsでカテゴリとタクソノミーのターム一覧の編集方法
get_categories()関数やget_terms()関数を使ってタクソノミーのタームを取得し検索処理の部品を作るプログラム作りその解説をしています。
-
WordPressのメールフォームはwp_mail()関数でメール送信。スパム対策も
WordPressでメール送信フォームを作成するための関数「wp_mail()」の使い方の解説。CC、BCC、添付ファイルも HTMLメールも設定可能。
-
WordPressの記事編集で文字が自動変換される要注意な文字列
記事を編集する際、入力した文字とは違う表示のされ方をする文字、アポストロフィ、ダブルクォート、円マーク、三点リーダ(…)など、その解説と対応方法です。
-
WordPressで ¥円マークが \バックスラッシュになる原因と対処方法
円マークがバックスラッシュに変換される。その原因と対処方法を解説します。原因はCSSでのフォント指定に欧文フォントも含まれるため欧文フォントで表示されること。
-
自サイト内のリンクをショートコードで指定する・アンカーリンク対応版
自サイト内の記事にショートコードで自動リンクを設定する関数のソースコードを提供。Post ID、slugで指定でき、アンカーリンクを設定する場合も対応。