wordpressのコードを見るのに飽きて手抜きで終わらせました。
どこかでちゃんと設定できそうな気がする。
・wp-includes\widgets\class-wp-widget-categories.php
49行目付近
function widget()内
1 |
$c = ! empty( $instance['count'] ) ? '1' : '0'; |
を
1 |
$c = ! empty( $instance['count'] ) ? '1' : '1'; |
に変えて終わり。
ビフォー
アフター
やったこと
grepかけまくりで変更箇所を探す。
リスト一覧を表示する関数を探した
調べた結果、wp_list_categories()らしい
wp_list_categoriesのドキュメントを見たところ、
show_countに1を指定できれば、件数が表示されるようだ
参考:WordPress codex日本語版
show_countをどうやって設定する?
show_countは素直に考えて、wp_list_categories()を呼び出すときに指定しているはず。
grepをかけた。
結果…
・wp-includes\widgets\class-wp-widget-categories.php(114,3)
このあたりが怪しいが、直接show_countを渡すのではなく、もう一段余計な段階を踏んでいるようだ。
$cat_argsにwp_list_categories()に渡す引数が入っているように見える。
apply_filtersの詳細は無視
apply_filtersはC系の言語でいうポインタや参照を作るような関数っぽい。
ある関数に、可変長引数や別の関数を渡したいときに使うっぽい。
今はWordPressのお勉強をしているわけではないので深入りはしない。
$cat_argsに値を設定している場所を探す
またgrep。cat_argsで。
一番上に出てきたやつがあやしいですね。ダブルクリックしてジャンプしてみます。
・wp-includes\widgets\class-wp-widget-categories.php(59,4)
function widget()内
$cat_args = array(
'orderby' => 'name',
'show_count' => $c,
'hierarchical' => $h
);
たぶんビンゴですね。
$cってなんだよ…といいたくなりますが、ここを1にすれば記事の件数は表示されるでしょう。
が、わざわざ変数を使っているということは、元をたどればもっとすっきり設定できる箇所がありそうに思えます。
$cってなんだよ…というのを判断する
ちょっと上を見ると$cの正体がわかります。
$c = ! empty( $instance['count'] ) ? '1' : '0';
$h = ! empty( $instance['hierarchical'] ) ? '1' : '0';
$d = ! empty( $instance['dropdown'] ) ? '1' : '0';
$instance[‘count’]が設定されていたら1、そうでなければ0になるわけですね。
$instance[‘count’]に値を突っ込んでいる場所を探す
参照段階が多すぎて飽きてきました。
考えられるのは、
1.設定ファイルなどを読み込んで$instanceを丸ごと設定している
2.直書き。phpコード上で、$instanceのパラメータをまとめて設定している
3.直書き。phpコード上で、$instance[‘count’]=0などで地道に設定している
あたりですか。まあとりあえず$instanceでgrepしてみます。
こんな感じになってます。
よくわからなかったので別の方向から行きます。
さきほどの、
$c = ! empty( $instance['count'] ) ? '1' : '0';
などがあった関数widget() の呼び出し元を探します。
widget(で検索した結果、(特殊文字が面倒なので正規表現はオフにしておくこと)、
class-wp-widget.php(395,11) [SJIS]: $this->widget( $args, $instance );
がひっかかりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
public function display_callback( $args, $widget_args = 1 ) { if ( is_numeric( $widget_args ) ) { $widget_args = array( 'number' => $widget_args ); } $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) ); $this->_set( $widget_args['number'] ); $instances = $this->get_settings(); if ( array_key_exists( $this->number, $instances ) ) { $instance = $instances[ $this->number ]; /** * Filters the settings for a particular widget instance. * * Returning false will effectively short-circuit display of the widget. * * @since 2.8.0 * * @param array $instance The current widget instance's settings. * @param WP_Widget $this The current widget instance. * @param array $args An array of default widget arguments. */ $instance = apply_filters( 'widget_display_callback', $instance, $this, $args ); if ( false === $instance ) { return; } $was_cache_addition_suspended = wp_suspend_cache_addition(); if ( $this->is_preview() && ! $was_cache_addition_suspended ) { wp_suspend_cache_addition( true ); } $this->widget( $args, $instance ); |
$instances = $this->get_settings();
$instance = $instances[ $this->number ];
このあたりがとても怪しいですね。
ここで完璧に飽きた
こんなことで時間食ってられないしつまらないので、
・wp-includes\widgets\class-wp-widget-categories.php
49行目付近
function widget()内
1 |
$c = ! empty( $instance['count'] ) ? '1' : '0'; |
を
1 |
$c = ! empty( $instance['count'] ) ? '1' : '1'; |
に変えて終わりにしました。