親カテゴリーに属する複数の小カテゴリーでウィジェットを表示する方法

WordPressで、
サイドバーのウィジェットを特定のカテゴリーに属する、全てのサブカテゴリー、小カテゴリーの記事で表示するにはどうすればよいか?
まず、Widget Logic プラグインをインストールする。 

Widget Logic

Widget Logic lets you control on which pages widgets appear using WP's conditional tags. It also adds a 'widget_content' filter.


次に、条件式を検討する。
どのような条件式にすればよいか?

A→ B,C,D,E,F,G,H

AというカテゴリーにはBというサブカテゴリー、Cという子カテゴリーがある。
B,CカテゴリーはAカテゴリーに属している。

例えば、
旅々→ タイ、マレーシア、支那、ヨーロッパ、アフリカ
というカテゴリー構造の場合。

is_category(’旅々”)

だけでは、支那、タイ等のカテゴリーの記事では表示されない。旅々カテゴリーのトップページか、旅々カテゴリーのみに属する記事にしか表示されない。

 post_is_in_descendant_category が鍵

  1. まず、post_is_in_descendant_category が使えるように  functions.php に次のコードを挿入する。
  2. <?php
    /**
     * Tests if any of a post's assigned categories are descendants of target categories
     *
     * @param int|array $cats The target categories. Integer ID or array of integer IDs
     * @param int|object $_post The post. Omit to test the current post in the Loop or main query
     * @return bool True if at least 1 of the post's categories is a descendant of any of the target categories
     * @see get_term_by() You can get a category by name or slug, then pass ID to this function
     * @uses get_term_children() Passes $cats
     * @uses in_category() Passes $_post (can be empty)
     * @version 2.7
     * @link http://codex.wordpress.org/Function_Reference/in_category#Testing_if_a_post_is_in_a_descendant_category
     */
    if ( ! function_exists( 'post_is_in_descendant_category' ) ) {
        function post_is_in_descendant_category( $cats, $_post = null ) {
            foreach ( (array) $cats as $cat ) {
                // get_term_children() accepts integer ID only
                $descendants = get_term_children( (int) $cat, 'category' );
                if ( $descendants && in_category( $descendants, $_post ) )
                    return true;
            }
            return false;
        }
    }
    ?>

2. 親カテゴリー名が「旅々」、そのスラッグ(URL)が'travel' 、そのカテゴリーIDが16であれば、次のようなコードになる。

in_category( '旅々' ) || post_is_in_descendant_category(16)

又は、

in_category( 'travel' ) || post_is_in_descendant_category(16)

カテゴリーIDは、ダッシュボード→投稿→カテゴリー を開いて、「旅行」カテゴリーをクリックするとアドレスバーに次のようにID=16 と表示される。

/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=16&post_type=post&......

Widget logic の設定欄に記入する。

widgetlogic
ちなみに、
is_category() 
の他に、
in_category()
has_category() 
もあるが、これだけではだめである。

  • またまたこのサイトのSSL証明書が期限切れになった。 Kusanagi の自動更新ができていない。 それで手動であれこれしてみても、こんなエラーが出る。# kusanagi update cert C ...
  • Google の Indexing API を使うと、新しい投稿記事を瞬時にGoogleの検索エンジンに登録できる。 WordPress のプラグインとしてインデックスAPIが利用できる。使い方は英語 ...
  • Yoast SEO を停止して、Rank Math SEO プラグインを使ってみたらGoogle の検索結果に表示される記事抜粋スニペットの文字数が短過ぎに見えてびっくりした。#1 Yoast Alt ...
  • WP_CRON を停止して、Linux の crontab に移行する設定をこれまでに何度も試みたがうまくいかなかった。 毎日バックアップされるはずの、UpdraftPlus プラグインのクロンが動い ...
  • Kusanagi WordPress プラットフォームでは Fcache とBcache がある。 Fcache とはNginx ヱブサーバーのキャッシュ機能であり、Kusanagi の独自機能ではな ...
  • 目次 1 HTTPD アクセスログの日本語化 2 Logwatch も日本語化 HTTPD アクセスログの日本語化 Nginx,  Apache ヱブサーバーのアクセスログを見ると、日本語URLはエン ...
  • ヱブサイトの再構築中には、スタイルシート、style.css を頻繁に調整更新する。 CSSを追加、編集する度に再読み込みを繰り返して、変更の反映を確認していた。 これで編集者は反映を確認できるのだが ...
  • WordPressで使える頁カウンターをいくつか同時に使ってカウントの仕方の違いを比べてみた。WP-PostViews    長期常用中 Post Views Counter  新規インストール Go ...

タグクラウド

WordPress カテゴリ人気記事 Views most

WordPress カテゴリ人気記事 月間

20151220

タグ関連記事

閲覧履歴

    //cookieが無い場合の処理
2019
GA-views: 161
20151220