<?php
$current_term = $wp_query->queried_object->name;
$current_term_id = $wp_query->queried_object->ID;
?>
<hgroup class="section-heading wrapper">
<h1><?php echo $current_term; ?></h1>
<h3><?php echo category_description( $current_term_id ); ?></h3>
</hgroup>
これはうまくいきますが、$current_term_id
変数は警告を投げます…
Notice: Undefined property: stdClass::$ID in /Users/my/htdocs/wr/wp-content/themes/wr/taxonomy-event_type.php on line 12
ここで私が間違っていること、または現在の用語のIDの実際の所有物は何ですか。
私は何日もまったく同じ問題に直面し、それからこれを見つけました!関数$wp_query->get_queried_object_id()
を使います。詳細については this を確認してください。
この関数のラッパーもあります get_queried_object_id()
。それはglobal $wp_query
のような全ての部分をそれ自身で呼び出します。
別の方法で強制されるまでは、常に最も低レベルのAPIを使用してください。
(現在の)ウィキペディアの記事によるAPIの定義は次のようになっています。
アプリケーションプログラミングインターフェース(API)は、互いに通信するためにソフトウェアコンポーネントによってインターフェースとして使用されることを意図した仕様である。
これは、それが coreの内部構造 およびあなたの theme または plugin と通信するように書かれていることを意味します。
1つの簡単な理由のために:ラッピングAPIは、コアとして、 内部 を変換することを可能にします。ラッパー関数は、コアクラス/オブジェクトがそうでないかもしれないところに後方互換性を加えることができます。
それはまたあなたのコードを短くし、それをより読みやすくしそしてあなたがあなたのコードによってされる必要があることに集中することを可能にする。
分類法アーカイブを使用している場合(is_tax()
はtrue
)、queried_object
は次のように入力されます(私のサイトの例)。
public 'queried_object' =>
object(stdClass)[163]
public 'term_id' => int 2
public 'name' => string 'Puglia' (length=6)
public 'slug' => string 'puglia' (length=6)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 7
public 'taxonomy' => string 'region' (length=6)
public 'description' => string 'Bari, Brindisi, Lecce, Taranto, Foggia' (length=38)
public 'parent' => int 0
public 'count' => int 1
public 'filter' => string 'raw' (length=3)
public 'queried_object_id' => int 2
だからあなたは直接名前と説明の両方を得る。使用できるコードは次のとおりです。
<?php
$current_term_name = $wp_query->queried_object->name;
$current_term_description = $wp_query->queried_object->description;
?>
<hgroup class="section-heading wrapper">
<h1><?php echo $current_term_name; ?></h1>
<h3><?php echo $current_term_description; ?></h3>
</hgroup>
$wp_query->queried_object->ID
には、潜在的な障害点がいくつかあります。
WP_Post
オブジェクトを扱っていないかもしれません。 queried_object
は状況によっては分類法も参照できます 。queried_object
はnullになる可能性があるため、存在しないオブジェクトのプロパティを求めています。そのグローバルへの参照がないコードで$wp_query
を使うことができます。 $wp_query
自体がnullであると判断した場合は、追加する必要があります。
global $wp_query;
...コードの上のどこかに.