web-dev-qa-db-ja.com

ページが商品のサブカテゴリページかどうかを検出しますか?

現在のページが商品サブカテゴリページであるかどうかをどうやって確認できますか?

私は以下を試してみましたが、それは常に "NO"を印刷します

function is_subcategory($category = null) {
    if (is_category()) {
        if (null != $category){
            $cat = get_category($category);
        }else{
            $cat = get_category(get_query_var('cat'),false);
        }
        if ($cat->parent == 0 ){
            return false;
        }else{
            return true;
        }
    }
    return false;
}

if (is_subcategory()){
    echo "YES";
}else{
    echo "NO";
}
2
user1231561

is_category()はビルトイン投稿カテゴリーのみをチェックします。製品カテゴリはカスタム分類法です。そのため、is_tax()の代わりに is_category() を、get_term()の代わりに get_category() を使用する必要があります。

この例をチェックしてください: -

function is_subcategory($cat_id = null) {
    if (is_tax('product_cat')) {

        if (empty($cat_id)){
            $cat_id = get_queried_object_id();
        }

        $cat = get_term(get_queried_object_id(), 'product_cat');
        if ( empty($cat->parent) ){
            return false;
        }else{
            return true;
        }
    }
    return false;
}

get_query_var()の代わりに安全な面も使います get_queried_object_id()

5
Sumit