プラグイン内にショートコードを作成しましたが、うまく機能しています。ショートコードは、いくつかのパラメーターを取り、出力を含むカスタム ループを作成する必要があります。
パラメーターの 1 つは、ループを出力する投稿の数です ($markers)
$args=array(
'meta_key'=>'_mykey',
'post_status'=>'publish',
'post_type'=>'post',
'orderby'=>'date',
'order'=>'DESC',
'posts_per_page'=>$markers,
);
$wp_query = new WP_Query();
$wp_query->query($args);
if ($wp_query->have_posts()) : while (($wp_query->have_posts()) ) : $wp_query->the_post();
// do the loop using get_the_id() and $post->id
endwhile;endif;
wp_reset_query();//END query
場合によっては、すべての投稿からのデータが必要に($markers = '-1' )
なり、場合によっては 1 つ($markers = '1' )
または複数のデータが必要になり($markers = 'x')
ます。
これらはすべて単一のページ/投稿でうまく機能しますが、私の問題は、この関数が複数の投稿 (!is_single) と ( $ markers = '1'
) がある場所にある場合、常に最新の投稿のデータを返し、そうではないことです。正しいものについて..(たとえば、デフォルトのワードプレステーマでは、10件の投稿が表示されます-それらはすべて同じデータになります)
これは明らかに$post->ID
- の問題ですが、 wp ループの外側でカスタム ループを実行するときに正しい投稿 ID を取得するにはどうすればよいですか?
私は問題を覆そうとしました
global $post;
$thePostIDtmp = $post->ID; //get the ID before starting new query as temp id
$wp_query = new WP_Query();
$wp_query->query($args);
// Start Custom Loop
if (!is_single()){
$post_id_t = $thePostIDtmp;}
else {
$post_id_t = $post->ID;}
そして使用 $post_id_t
- しかし、うまくいかなかったようです。 get_the_id() を使用しない方がよいですか? または、クエリを使用しない (および get_posts を使用する) べきですか??
アイデア/解決策/考えはありますか??