例から始めるとより理にかなっているので、これは関数の例です:
function seo_meta_tags() {
global $post;
if( is_singular() ) {
setup_postdata( $post );
$description = str_replace( '... <a class="read-more" href="' . get_permalink() . '">Cont. reading →</a>', '...', get_the_excerpt() );
wp_reset_postdata();
echo '<meta itemprop="description" name="description" content="' . $description . '">';
}
}
注:このコードは、達成しようとしていることを示すためのものです。それ。
ここまで来たら、例に示すようにsetup_postdata( $post )
をwp_reset_postdata()
で閉じるべきでしょうか。
setup_postdata
は めちゃくちゃになっている 他のループ( The Loop を含む)によって使われる可能性がある(たぶん:are)グローバル変数を使って、常にリセットすべきですこれらの変数は、メインのクエリに従って(つまり、WordPressが最初にユーザーが望んでいたと思うことに応じて)本来あるべきものへと変化します。
さらに、setup_postdata
には$post
グローバル(への参照)が提供されていますが、これは後で変更される可能性があります。
したがって、はい、 setup_postdata
は wp_reset_postdata
を伴う必要があります。
コード からわかるように、reset_postdata
関数は、実際には original setup_postdata
オブジェクトに対して$post
を呼び出しています。