Sponser Link
WordPressで固定ページをブログのトップとして記事を一覧表示する方法
上手くいった書き方。
<dl> <?php global $post; $args = array( 'posts_per_page' => 5 ,'cat' => '4,5,6,7' ); $myposts = get_posts( $args ); foreach( $myposts as $post ) { setup_postdata($post); ?> <?php $cat = get_the_category(); $cat = $cat[0]; ?> <dt class="<?php echo $cat->category_nicename; ?>" id="post-<?php the_ID(); ?>" <?php post_class( 'post' ); ?>><?php the_time('Y.m.d') ?> </dt> <dd><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></dd> <?php } wp_reset_postdata(); ?> </dl>
<?php global $post; $args = array( 'posts_per_page' => 5 ,'cat' => '4,5,6,7' ); <!--取得件数5件、カテゴリーID4,5,6,7--> $myposts = get_posts( $args ); <!--get_posts - 条件にマッチする投稿情報を取得する--> foreach( $myposts as $post ) { <!--foreach文は配列に含まれる各要素の値を順に取り出し処理したい場合に便利な文--> <!--「$myposts」の中にはカテゴリーIDが8の投稿記事が全件入ってましたよね。 では次に「foreach($my_posts as $post):」をすることで「$myposts」(記事の一覧)の内の1件の投稿記事を「$post」へ渡しています。--> setup_postdata($post); ?> <!--「setup_postdata($post)」をすることで「今からこの記事を使いたいから〜〜〜〜」とWordPressに教えています。 ※setup_postdata=ポストデータをセットアップする。拳銃に玉を詰めて、引き金を引いた状態にしたって感じでしょうか。--> (略) <?php } wp_reset_postdata(); ?> <!--グローバル変数$postや各種投稿付随情報も更新されることになり、ページの表示内容に影響を及ぼしてしまう。このwp_reset_postdata関数は、$postをメインの投稿情報に切り替え、各種投稿付随情報も初期状態に戻す。-->
上記はget_postsを使っている。似たものに、query_postsというものがる。
どう使い分けたらいいのか。
get_postsでは条件分岐が使えない。
サイドバーではget_postsがいい。
get_posts – 条件にマッチする投稿情報を取得する
query_posts – 条件を指定して投稿情報をロードする
理由はわからないが、色々なやり方が紹介されていたのに、
どれもまったく表示してくれなかった。
<?php /** * Template Name: Blog Archive */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php $paged = (int) get_query_var('paged'); $args = array( 'posts_per_page' => 10, 'paged' => $paged, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish' ); $myquery = new WP_Query($args); if ( $myquery->have_posts() ) : ?> <header class="archive-header"> <h1 class="archive-title">ブログアーカイブ</h1> </header><!-- .archive-header --> <?php while ( $myquery->have_posts() ) : $myquery->the_post(); get_template_part( 'content', get_post_format() ); endwhile; if ( $myquery->max_num_pages > 1 ) : ?> <nav class="navigation" role="navigation"> <div class="nav-previous alignleft"><?php echo get_next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ), $myquery->max_num_pages ); ?></div> <div class="nav-next alignright"><?php echo get_previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div> </nav> <?php endif; ?> <?php else : ?> <?php get_template_part( 'content', 'none' ); ?> <?php endif; ?> <?php // reset post data wp_reset_postdata(); ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
<a href="http://jobtech.jp/wp/761/" target="_blank" rel="noopener noreferrer">固定ページに最新記事を表示する </a>
<?php //最新5件を表示 $paged = get_query_var('paged'); //現在のページ番号 $num = 5; //表示件数 query_posts('posts_per_page='.$num.'&paged='.$paged); if ( have_posts() ) : while ( have_posts() ) : the_post(); //テンプレートのフォーマット呼び出し get_template_part( 'content' ); endwhile; else : //記事がない時のテンプレート get_template_part( 'content', 'none' ); endif; wp_reset_query(); ?>
Sponser Link