WordPress Snippet

ワードプレスをカスタマイズしよう

現在のカテゴリーIDを取得する8種の方法

カテゴリーアーカイブをカスタマイズしようと考え始めると、

例えば、関連する親カテゴリーを表示したいといった場合に まず必要になるのが 現在のカテゴリーID でしょう。

WEB上には、「現在のカテゴリーID」に関する情報が、たくさんあります。

WordPressに詳しい人は、そんなの簡単だ。と そんなことに言及する気にもならないかもしれませんが、それは置いておいて「現在のカテゴリーID」の取得方法をおさらいしてみましょう。

idの取得方法を並べてみると、結構いろいろな取得方法があり、数年前には、カテゴリーとタグだけだったものが、カスタムタクソノミが使えるようになった事で、取得方法も増えてきている事がわかります。

get_query_var()

$cat_id= get_query_var('cat');
 * @since 1.5.0
 * @since 3.9.0 The `$default` argument was introduced.

get_queried_object()

$current_category= get_queried_object();
var_dump( $current_category->term_id );
or
var_dump( get_queried_object()->term_id ?? 'not set' ); //PHP7
 * @since 3.1.0

get_queried_object_id()

var_dump(get_queried_object_id());

@since 3.1.0

get_term_by()

$name		= single_cat_title( '', false );
$term_meta	= get_term_by( 'name', $name, 'category' );
var_dump( $term_meta->term_id );
 * @since 2.3.0
 * @since 4.4.0 `$taxonomy` is optional if `$field` is 'term_taxonomy_id'. Converted to return
 * a WP_Term object if `$output` is `OBJECT`.

get_the_category()

$categories= get_the_category();
$category_id= $categories[0]->cat_ID;
 * @since 0.71

$wp_query

var_dump( $wp_query->query_vars['cat'] );

$wp_query 2

$term=	$wp_query->queried_object;
var_dump( $term->term_id );

$cat

var_dump( $cat );

カテゴリーアーカイブでカテゴリーIDを取得する場合、上記の get_the_category() は、問題を引き起こす可能性がありそうです。この関数は、シングルページで使う事を想定しているので、(投稿IDで調べるので)アーカイブページで使った場合、複数カテゴリーが指定されているような環境だと誤動作をを起こす可能性があります。

今使っているカテゴリーIDの取得方法より、いい方法は見つかりましたか?

関連

get_the_category_by_ID( $cat_ID );
get_category_by_slug( $slug );

[emulsion_relate_posts]