query_postのお勉強と備忘録
post()関係を勉強しよう。
20140222
個別記事ページの表示がうまくいかない。
なにか記事までのリンクがちゃんと飛べてない。
なんだーー
ってことで、整理しました。
記事個別ページ表示までのながれ。
page-blog.php
//postsを定義
$`posts` =get_posts('numberposts=-1&category_name=art');
//(注意)post
とposts
を混同しない
global $post;
if($posts): foreach($`posts` as $`post`): setup_postdata($post);
//上でsetup_postdata($post
)されたpost先へリンク
the_permalink();
single.php
//問題個所
//sidebarを先に呼び出した場合
<?php $myquery_status = array(
'tax_query' => array(array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => 'post-format-aside'
))
); ?>
// 別のpostsを呼び出している
<?php `query_posts`($myquery_status); ?>
<?php if(have_posts()): while(have_posts()): `the_post()`; ?>
<li>
<?php echo get_the_content(); ?>
<span> <?php echo get_the_date('n月j日 h:i A'); ?></span>
</li>
<?php endwhile; endif; ?>
//post
を呼び出す
if(have_posts()): while(have_posts()): the_post();
get_template_part('content', 'single');
content-single.php
//記事本文の表示
the_content()
wordpress内のquery_postの構造
対応
良く分からないが、queryオブジェクト見たいのがあって、基本的にグローバルで管理してるみたい。 だけど、今回のようにsidebarで違うループを回す場合のために、WP_Queryを使って新しいqueryオブジェクトを作って、ループが終わればリセットする。
とできるみたい。
//WP_Queryを使った処理
<?php
$fifi_query = new WP_Query($args);
if ( $fifi_query -> have_posts() ):
while( $fifi_query -> have_posts()):
$fifi_query -> the_post();
endwhile;
//処理
endif;
wp_reset_postdata();
?>
//通常
<?php
if(have_posts()):
while(have_posts()):
the_post();
?>
<?php get_template_part('content', 'single'); ?>
<p class="pagenation">
<span class="oldpage"><?php previous_post_link(); ?></span>
<span class="newpage"><?php next_post_link(); ?></span>
</p>
<?php endwhile; endif; ?>
これで成功。 詰まりましたがなんとか。