0

Wordpress では、カテゴリのサブカテゴリの深さを取得しようとしています。

サブカテゴリ「親」を持つカテゴリ「祖父母」があり、サブカテゴリ「子」があるとします。整数 2 を取得するにはどうすればよいですか?

「祖父母」にサブカテゴリがあるかどうかを確認し、ある場合は0になるまでサブカテゴリがあるかどうかを確認できると思いますが、それは多くの不要な処理のようです。

もっとエレガントな方法はありませんか?

4

3 に答える 3

2

ここには、カテゴリの深さを取得する関数を作成する方法を示す素敵なブログ投稿があり ますが、関数にさらにオプションがあるページを確認してください。

編集:ここにコード:

function get_depth($id = '', $depth = '', $i = 0) {
    global $wpdb;

    if($depth == '') {
        if(is_page()) {
            if($id == '') {
                global $post;
                $id = $post->ID;
            }
            $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$id."'");
            return get_depth($id, $depth, $i);
        }
        elseif(is_category()) {
            if($id == '') {
                global $cat;
                $id = $cat;
            }
            $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'");
            return get_depth($id, $depth, $i);
        }
        elseif(is_single()) {
            if($id == '') {
                $category = get_the_category();
                $id = $category[0]->cat_ID;
            }
            $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'");
            return get_depth($id, $depth, $i);
        } 
    }
    elseif($depth == '0') {
        return $i;
    }
    elseif(is_single() || is_category()) {
        $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$depth."'");
        $i++;
        return get_depth($id, $depth, $i);
    }
    elseif(is_page()) {
        $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$depth."'");
        $i++;
        return get_depth($id, $depth, $i);
    }
}
于 2013-10-15T16:52:55.033 に答える