私はarchive.phpとsingle.phpの中にカスタム投稿タイプの名前を出力する必要があります。
私はこのようなものを使うでしょう:
if ( 'staff' == get_post_type() ) {
$post_type = 'staff';
}
echo '<div class="'.$post_type.'">Content</div>';
これは私に<div class="staff">
の必要な結果を与えるでしょう
しかし、私は$post_type
と呼ばれるグローバル変数にアクセスし、global
を宣言しなくてもarchive.phpまたはsingle.phpに単純にこれを出力することができるようです。
<div class="<?php echo $post_type; ?>">
コーデックスは、グローバル変数$post_type
はWordpressの管理領域内で使用するためのものであると言います。
私の質問は:
$post_type
が最初にグローバルに宣言しなくても動作するのはなぜですか?$post_type
グローバル変数を使用するのは良い考えですか?ありがとうございました
グローバルな$post_type
は通常、メインクエリ$wp_query
のパブリッククエリ変数からのものですが、get_post_type()
はループ内の現在の$post
オブジェクトのpost型です。
だから例えば二次ループこれは異なる場合があります。
$post_type
のデフォルトの投稿タイプはpost
投稿タイプであるため、グローバルなWP_Query
が常に設定されるとは限りません。
WP::register_globals()
から、post_type
クエリ変数がグローバルにアクセス可能になる方法を見ることができます。
// Extract updated query vars back into global namespace.
foreach ( (array) $wp_query->query_vars as $key => $value ) {
$GLOBALS[ $key ] = $value;
}
私が最近の回答 をここに投稿したように 。
前者は通常、デフォルトを含むさまざまなケースを処理するように設計されており、必要に応じて更新されるため、一般的に、私は直接グローバルを使用する代わりにWordPress API呼び出しを使用します。
グローバルと直接協力することで、グローバルを無効にするリスクが高まります。
あなたの目標がいくつかのCSSセレクターをセットアップすることであるなら、body_class()
コア関数と共に、<body>
タグのために提供されたものを単に使うことができます。ループ内で post_class()
コア関数も検討してください。これには既にポストタイプのクラス情報が含まれています。