それが属している分類法を欺くことを知らなくても、それをidで表すことができますか?
用語IDを格納するメタフィールドがありますが、分類法は格納していません。ただし、すべてのget_term
関数には、分類パラメーターが必須としてマークされています。
多分私はそれが(用語の)IDでどういうわけか用語の分類法を得ることができますか?
はい、できますが、独自のSQLクエリを作成する必要があります。
WPのget_term()の修正版
function &get_term_by_id_only($term, $output = OBJECT, $filter = 'raw') {
global $wpdb;
$null = null;
if ( empty($term) ) {
$error = new WP_Error('invalid_term', __('Empty Term'));
return $error;
}
if ( is_object($term) && empty($term->filter) ) {
wp_cache_add($term->term_id, $term, 'my_custom_queries');
$_term = $term;
} else {
if ( is_object($term) )
$term = $term->term_id;
$term = (int) $term;
if ( ! $_term = wp_cache_get($term, 'my_custom_queries') ) {
$_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.* FROM $wpdb->terms AS t WHERE t.term_id = %s LIMIT 1", $term) );
if ( ! $_term )
return $null;
wp_cache_add($term, $_term, 'my_custom_queries');
}
}
if ( $output == OBJECT ) {
return $_term;
} elseif ( $output == ARRAY_A ) {
$__term = get_object_vars($_term);
return $__term;
} elseif ( $output == ARRAY_N ) {
$__term = array_values(get_object_vars($_term));
return $__term;
} else {
return $_term;
}
}
おそらく良い考えではありません。メタフィールドでも税金を処理するようにしてください。
One Trick Ponyの答えを受け入れたのは、私が正しい方向に進み、私の質問に答えたからです。しかし、最後にこれを使用していますが、それはその分類法のフィールドと共に満期のオブジェクトを返します。ちょっとハッキーだけど….
/**
* Get ther without khowing it's taxonomy. Not very Nice, though.
*
* @uses type $wpdb
* @uses get_term()
* @param int|object $term
* @param string $output
* @param string $filter
*/
function &get_term_by_id($term, $output = OBJECT, $filter = 'raw') {
global $wpdb;
$null = null;
if ( empty($term) ) {
$error = new WP_Error('invalid_term', __('Empty Term'));
return $error;
}
$_tax = $wpdb->get_row( $wpdb->prepare( "SELECT t.* FROM $wpdb->term_taxonomy AS t WHERE t.term_id = %s LIMIT 1", $term) );
$taxonomy = $_tax->taxonomy;
return get_term($term, $taxonomy, $output, $filter);
}