サンプルコード
カテゴリー
「全てのカテゴリー」を取得
$categories = get_categories();
出力例
Array ( [0] => WP_Term Object ( [term_id] => 9 [name] => 投稿カテゴリーA [slug] => cat_a [term_group] => 0 [term_taxonomy_id] => 9 [taxonomy] => category [description] => [parent] => 0 [count] => 3 [filter] => raw [cat_ID] => 9 [category_count] => 3 [category_description] => [cat_name] => 投稿カテゴリーA [category_nicename] => cat_a [category_parent] => 0 ) [1] => WP_Term Object ( [term_id] => 10 [name] => 投稿カテゴリーB [slug] => cat_b [term_group] => 0 [term_taxonomy_id] => 10 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 10 [category_count] => 1 [category_description] => [cat_name] => 投稿カテゴリーB [category_nicename] => cat_b [category_parent] => 0 ) )
「全てのカテゴリー」をリンク付きでHTML出力
$categories = get_categories();
foreach($categories as $category) {
echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>';
}
「投稿に設定されているカテゴリー」をリンク付きでHTML出力(1つのみ)
$category = get_the_category()[0];
echo '<a href="' . get_category_link($category->term_id) . '">' . $category->name . '</a>';
「カスタム投稿に設定されているターム」をリンク付きでHTML出力(1つのみ)
$term = get_the_terms($post->ID, 'タクソノミーのスラッグ')[0];
echo '<a href="' . get_term_link($term->slug, 'タクソノミーのスラッグ') . '">' . $term->name . '</a>';
投稿一覧
投稿一覧を取得(メインループ)
<?php
if (have_posts()) :
while (have_posts()) : the_post();
// タイトルなどの投稿情報をこの中に書く
endwhile;
else :
echo '<p>投稿がありません。</p>';
endif;
?>
投稿一覧を取得(サブループ)
<?php
$args = array(
// パラメータ
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
// タイトルなどの投稿情報をこの中に書く
endwhile;
else :
echo '<p>投稿がありません。</p>';
endif;
wp_reset_postdata();
?>
パラメータの例
$args = array(
'post_type' => 'news',
'taxonomy' => 'news-cat',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 5,
);
ページャー
ページャーを取得(get_the_posts_pagination)
メインループで主に使用
<?php
// デフォルトだとスクリーンリーダー用の要素が出力されるから、preg_replace()で消す
$pagination = preg_replace(
'/\<h2 class=\"screen-reader-text\"\>(.*?)\<\/h2\>/',
'',
get_the_posts_pagination(array(
'mid_size' => 2, // 現在のページの左右に表示するページ番号の数
'prev_text' => '',
'next_text' => ''
))
);
if ($pagination) {
echo '<div class="p-entries__pagination">';
echo ' <div class="c-pagination">' . $pagination . '</div>';
echo '</div>';
}
?>
ページャーを取得(paginate_links)
サブループで主に使用
<div class="p-entries">
<?php
global $max_num_page;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
// パラメータは任意のものを指定( paged は必須)
'post_type' => 'post',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'paged' => $paged,
);
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
// タイトルなどの投稿情報をこの中に書く
endwhile;
wp_reset_postdata();
?>
</div>
<?php
if ($the_query->max_num_pages > 1) {
echo '<div class="p-entries__pagination">';
echo paginate_links( array(
'base' => get_pagenum_link(1).'%_%',
'format' => 'page/%#%/',
'current' => max(1, $paged),
'total' => $the_query->max_num_pages,
'type' => 'list',
'mid_size' => '1',
'prev_text' => '<',
'next_text' => '>'
) );
echo '</div>';
}
?>
投稿情報(記事タイトルなど)
タイトル
<h1><?php the_title(); ?></h1>
パーマリンク
<a href="<?php the_permalink(); ?>">xxxxx</a>
投稿日
<time datetime="<?php echo get_the_date('Y-m-d'); ?>">
<?php echo get_the_date('Y.m.d'); ?>
</time>
更新日
<time datetime="<?php echo get_the_modified_date('Y-m-d'); ?>">
<?php echo get_the_modified_date('Y.m.d'); ?>
</time>
投稿日と更新日が違う場合のみどちらも表示(同じなら投稿日のみ表示)
<span>投稿日</span>
<time datetime="<?php echo get_the_date('Y-m-d'); ?>">
<?php echo get_the_date('Y.m.d'); ?>
</time>
<?php if(get_the_date('Y-m-d') !== get_the_modified_date('Y-m-d')) : ?>
<span>更新日</span>
<time datetime="<?php echo get_the_modified_date('Y-m-d'); ?>">
<?php echo get_the_modified_date('Y.m.d'); ?>
</time>
<?php endif; ?>
最終更新日時(x日前、x時間前など)
<span>最終更新:
<?php echo human_time_diff( get_the_modified_date('U'), current_time('timestamp') ); ?>
前</span>
サムネイル
<?php
if (get_the_post_thumbnail()) {
the_post_thumbnail('full');
} else {
echo '<img src="' . home_url('no-image.jpg') . '" alt="">';
};
?>
投稿本文
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
抜粋
<?php the_excerpt(); ?>