カテゴリー一覧の取得とカスタマイズ

WordPressのカテゴリウィジェットから一部のカテゴリを削除

ウィジェット内部で使用しているテンプレートタグ

WordPressのカテゴリ一覧を取得/表示する方法と取得したカテゴリから一部のカテゴリを除外する方法を調べ、

WordPressをカスタマイズする一つの方法について書いてみます。

カテゴリウィジェットの内部では、wp_list_categoriesというテンプレートタグを使用して、カテゴリ一覧を表示しています。

wp list categories WordPress Codex

WordPress codexでdefault usageを確認することができ、wp_list_categories()に渡すことが出来る引数の一覧を把握することが出来ます。

  • show_option_all
  • orderby
  • order
  • style
  • show_count
  • hide_empty
  • use_desc_for_title
  • child_of
  • feed
  • feed_type
  • feed_image
  • exclude
  • exclude_tree
  • include
  • hierarchical
  • title_li
  • show_option_none
  • number
  • echo
  • depth
  • current_category
  • pad_counts
  • taxonomy
  • walker

これらの引数を調整することで、wp_list_categoriesで出力するカテゴリー一覧を柔軟にカスタマイズすることが可能です。

カテゴリーウィジェットの処理を確認

WordPressの

外観 → ウィジェット

でカテゴリーウィジェットを追加することができますが、wp_list_categoriesの引数を自在にカスタマイズすることは出来ない状態になっています。

しかし、カテゴリーウィジェットの処理を確認すると、内部でwp_list_categoriesを使用してカテゴリー一覧を取得/表示していることが確認できます。

wp-includes/default-widgets.php

に定義されている

WP_Widget_Categoriesクラス

の最後の方でwp_list_categories()が使われています。そして、引数をフィルターでカスタマイズ出来るように設定されていることも確認できます。

wp_list_categories( apply_filters( 'widget_categories_args', $cat_args ) );

widget_categories_argsフィルターフックを使用して、引数をカスタマイズ可能な状態にしてあります。設定可能な引数のリストは上で挙げた通りです。

引数のカスタマイズ

フィルターの使用

WordPressのフィルターフックを使うことが出来るので、functions.phpでフィルターを設定します。

最初に標準でどのような引数が設定されているのか、$argsのデータ構造を確認します。

function customize_category_list( $args ) {

echo "<pre>";
var_dump($args);
echo "</pre>";

    return $args;
}

add_filter( 'widget_categories_args', 'customize_category_list' );

var_dump()したところ以下のデータ構造が表示されました。

array(5) {
  ["orderby"]=>
  string(4) "name"
  ["show_count"]=>
  string(1) "0"
  ["hierarchical"]=>
  string(1) "0"
  ["title_li"]=>
  string(0) ""
}

設定できる引数の一部のみが標準では使われていることが確認できます。

除外

記事の冒頭で書いたとおり、一部のカテゴリを除外してみます。カテゴリ一覧から特定のカテゴリを除外するためには、

exclude引数

を使用します。

$argsのデータ構造は、key/value形式になっているので、以下のようにして引数を追加します。

function customize_category_list( $args ) {
    $args['exclude'] = 2;
    return $args;
}

add_filter( 'widget_categories_args', 'customize_category_list' );

その他の引数を設定する場合も同じ要領で引数を追加し、カテゴリ一覧の表示をカスタマイズすることが出来ます。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

カテゴリー一覧の取得とカスタマイズの記事にコメントを投稿

カスタマイズ