これは完全に "私はまだWPに慣れていない"というタイプの質問かもしれませんが、 get_posts()
と wp_get_recent_posts()
を使ったときに面白い出力に遭遇しました。私が setup_postdata()
で書いたカスタム関数。これは私がfunctions.phpファイルに持っていたものです:
<?php
function getRecentPosts($total_posts = 2)
{
$total_posts = intval($total_posts);
global $post;
$args = array(
'posts_per_page' => $total_posts,
'post_type' => 'post',
'post_status' => 'publish'
);
$posts = get_posts($args);
foreach ($posts as $post)
{
setup_postdata($post);
echo '<div>';
the_title();
echo '</div>';
}
wp_reset_postdata();
}
簡単でしょ?そしてその関数はうまく機能し、タイトルのdiv
タグの内側を完全に捨てます。 7行目から12行目を次のように置き換えます。
...
$args = array(
'posts_per_page' => $total_posts,
//'post_type' => 'post',
'post_status' => 'publish'
);
$posts = wp_get_recent_posts($args);
...
...その場合、関数の先頭でglobal $post
を使用しないのと同じように、関数は投稿を正しく「反復」しないように見え、最初の投稿を何度も繰り返して破棄します。
どうしてこれなの? wp_get_recent_posts()
が私にはまだ理解していないこととは異なる何かがありますか。