投稿数0のカテゴリーをメニューに表示する方法
-
Gridster-Liteというテーマを使用しています。
サイドバーにメニューがあり、そこにカテゴリーを表示しているのですが、
投稿数0のカテゴリーは表示されません。
投稿数0のカテゴリーを表示したく、sidebar.phpを見ていたのですが、
wp_list_categoriesがなく、以下の様な記述でカテゴリーを表示しているようです。<?php _e( ‘Archives’, ‘gridster’ ); ?>
</h1>-
<?php wp_get_archives( array( ‘type’ => ‘monthly’ ) ); ?>
この場合、投稿数0のカテゴリーを表示させるにはどのようにすればよいでしょうか。
よろしくお願いします。
-
もし、ウィジェットでカテゴリを出力しているのであれば、フックで対応が可能です。
<?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' ); ?>
mimimiwさん、いまサイドバーにカテゴリー一覧を表示できているのですよね。その場合、管理画面の外観→ウィジェットに「Sidebar」という名前のサイドバーがあり、そこに「カテゴリー」ウィジェットが登録されているはずと思います。そのとおりならTsuyoshi.さんからアドバイスされた方法で実現できますよ。
sidebar.phpに出てくるwp_get_archivesは、ウィジェットが未登録のとき代わりに表示されるものなので、気にしなくてよいと思います。
皆様
丁寧なご説明ありがとうございます。
Tsuyoshi.さんから頂いた内容を入れてみたのですが、
表示されませんでした。。。
きっと私の記述している箇所がおかしいのだと思うのですが、
どこに記述すれば良いなどありますでしょうか?きっと私の記述している箇所がおかしいのだと思うのですが、
テーマのどのファイル(テンプレート名やファイル名)にどのように記述を入れたか教えてください。どのように、というのは先頭か末尾か、途中の場合は次のような感じでわかれば大丈夫です。
元からあったコード(5行くらいでOK) 追加したコード(省略せずに) 元からあったコード(5行くらいでOK)
sidebar.phpに追記しました。
現状のsidebar.php全文が以下です。
`
<div id=”container”>
<div id=”sidebar”>
<?php if ( get_theme_mod( ‘themefurnace_logo’ ) ) : ?>
<p><a href='<?php echo esc_url( home_url( ‘/’ ) ); ?>’ title='<?php echo esc_attr( get_bloginfo( ‘name’, ‘display’ ) ); ?>’ rel=’home’><img class=”logo” src='<?php echo esc_url( get_theme_mod( ‘themefurnace_logo’ ) ); ?>’ alt='<?php echo esc_attr( get_bloginfo( ‘name’, ‘display’ ) ); ?>’ /></a></p>
<p><span class=”tagline”>
<?php bloginfo( ‘description’ ); ?>
</span></p>
<?php else : ?>
<h1 id=”blogtitle”><a href=”<?php echo esc_url( home_url( ‘/’ ) ); ?>” title=”<?php echo esc_attr( get_bloginfo( ‘name’, ‘display’ ) ); ?>” rel=”home”>
<?php bloginfo(‘name’); ?>
</a></h1>
<p class=”tagline”>
<?php bloginfo( ‘description’ ); ?>
</p>
<?php endif; ?>
<div class=”sidebarwidget”>
<?php wp_nav_menu( array( ‘theme_location’ => ‘primary’ ) ); ?>
</div>
<?php do_action( ‘before_sidebar’ ); ?>
<?php if ( ! dynamic_sidebar( ‘sidebar-1’ ) ) : ?>
<?php get_search_form(); ?>
<h3 class=”sidetitle”>
<?php _e( ‘Archives’, ‘gridster’ ); ?>
</h1>
<ul>
<?php wp_get_archives( array( ‘type’ => ‘monthly’ ) ); ?>
</ul><h3 class=”sidetitle”>
<?php _e( ‘Meta’, ‘gridster’ ); ?>
</h1>
<?php endif; // end sidebar widget area ?>
</div>
<?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’ );
?>
<!– End Sidebar –>
`この最下部に追記しました。
sidebar.php には書かないで functions.php へ追記してください。
なお(御存知と思いますが) FTP などで functions.php のバックアップをとり、もし管理画面へログインできなくなっても戻せることをあらかじめ御確認ください。
functions.php に追加をすると404エラーに成ってしまいました。
functions.php の場合はどこに記述すればよいでしょうか。
(最下部に追記しました。)functions.php の最下部で大丈夫ですが、PHPコードを表す開きカッコ
<?php
と閉じカッコ?>
がアンバランスになっているかもしれません。追加する前の functions.php の最後が?>
で終わっていなければ、追加するコードの先頭の<?php
を消してください。ありがとうございます。
functions.php の最後が ?> で終わっていなかったので、
先頭の <?php を消して入れてみました。
エラーは出てきませんでしたが、
画面が真っ白になりなにも表示されなくなってしまいました。。。
原因は何でしょうか・・・気づかないうちに文字化けしているかもしれないので見直してみてはどうでしょう。たまにやるのが全角スペース(半角ならok)や、シングルクォートがよく似た文字に置き換わっているなどです。
念のため確認ですが、functions.phpそのものの一行目は
<?php
で始まっていますよね。追記: どうみてもおかしくなかったら、functions.php 全体をpastebin.comサイトへ貼り付けてリンクを教えて頂けますか。(長いコードをこのフォーラムへ貼ると見づらいので)
functions.php に記述するって書いておけばよかったですね、すみません^^;
エラーの解析方法も一応載せておきます。
画面が真っ白ってびっくりされると思いますが、PHPの記述ミスなどをしてしまうと今後も直面する問題なので、ご自分でエラーの内容を把握し、エラーメッセージから原因を調べるということを覚えると今後トラブルにもスムーズに対応できると思います。
gblsmさん
「念のため確認ですが、functions.phpそのものの一行目は <?php で始まっていますよね。」
その通りです。文字化け等も見当たりません。。(もう少し細かく見てみます)Tsuyoshi.さん
WordPressのデバッグモードを設定してみました。
その後もう一度、functions.php に記述をしてみたところ、下記のようなメッセージが出てきました。Cannot redeclare hook_widget_categories() (previously
⇒hook_widget_categoriesを再宣言することはできません???
- トピック「投稿数0のカテゴリーをメニューに表示する方法」には新たに返信することはできません。