WordPressでよく忘れる関数とかフックとか

任意にget_postで取得した$postの設定

任意にget_post($post_id)などで持ってきた場合は、the_content()とかループ内での関数がつかえないので、setup_postdata($post);を行う必要がある。

$post_id = (int)$_GET['p'];
$post = get_post( $post_id );
setup_postdata($post);

記事取得からリスト

<?php
$args = array(
  'cat' => 1,
  'posts_per_page' => 5
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
  while ( $the_query->have_posts() ) : $the_query->the_post();
  //ここにループするテンプレート
  endwhile;
endif;
wp_reset_postdata();
?>

<ul>
    <?php
    $query = new WP_Query(array('posts_per_page' => 6,'post_status'=>'publish','category_name'=>'event'));
    $posts = $query->get_posts();
    foreach($posts as $key => $post){
        $cat = get_the_category($post->ID);
        if(!empty($cat[1])){
            $cat = array(
                'name' =>$cat[1]->name,
                'slug' =>$cat[1]->slug
            );
        }else{
            $cat = array(
                'name' =>'',
                'slug' =>''
            );
        }
        ?>
        <li>
            <a href="<?php the_permalink() ?>">
                <span class="date"><?php the_time('Y-m-d'); ?></span>
                <span class="category cat-<?php echo $cat['slug'] ?>"><?php echo $cat['name']; ?></span>
                <span class="body"><?php the_title(); ?></span>
            </a>
        </li>
        <?php
    }
    wp_reset_query();
    ?>
</ul>

カスタム投稿タイプのカテゴリでの絞込

<ul>
<?php
$args = array(
  'post_type'=>'product',
  'posts_per_page' => -1,
  'post_status'=>'publish',
  'tax_query' => array(
    array(
      'taxonomy' => 'product_category',
      'field'    => 'slug',
      'terms'    => 'heart',
    ),
  )
);
$query = new WP_Query($args);
$posts = $query->get_posts();
echo "<pre>".print_r($posts,true)."</pre>";exit;
foreach($posts as $key => $post){
  ?>
  <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
  <?php
}
wp_reset_query();
?>
</ul>