web-dev-qa-db-ja.com

カテゴリ名からカテゴリIDを取得するにはどうすればよいですか。

同じ名前のカテゴリがいくつかあります(それらの一部はサブカテゴリです)。そして私は特定のカテゴリ名のIDの配列を取得したいのです。私はこれを試しました:

 $term = get_term_by('name', $cat_name, 'category');

しかし、get_term_by()はクエリにマッチする最初の単語だけを返すようです。

3
s976

私が知っている(コア機能を使用して)唯一の代替手段は、

// Get terms whose name begins with "my_name"
get_terms( 'category', array( 'name__like' => 'my_name' ) );

// Get terms whose name contains "my_name"
get_terms( 'category', array( 'search' => 'my_name' ) );

完全一致が必要な場合は、カスタムクエリを実行する必要があります。

$wpdb->get_results( "SELECT t.*, tt.* FROM $wpdb->terms AS t
    INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id
    WHERE tt.taxonomy = 'category' AND t.name = 'my_name'"
);
5
TheDeadMedic

get_cat_ID( $cat_name )がトリックをやることができます!例:

<?php
     $category_id = get_cat_ID('Category Name');
     $q = 'cat=' . $category_id;
     query_posts($q);
     if (have_posts()) : while (have_posts()) : the_post();

     the_content();

     endwhile; endif;
?>

より詳しく!

3
enam