ブログ

BLOG

CATEGORY

WordPress よく使用するコード一覧

現在開いてるアーカイブ、タクソノミー、詳細ページの投稿タイプを取得

/* get_post_typeのみだとアーカイブページ、タクソノミーページで記事が無い時に処理出来ない。下記でそれを防止。 */
$post_type_now = "";
if( is_tax() ){
$post_type_now = get_taxonomy( get_query_var( 'taxonomy' ) )->object_type[0];
}else if( is_archive() ){
$post_type_now = get_query_var( 'post_type' );
}else{
$post_type_now = get_post_type();
}
/* 使用例 */
if( $post_type_now == 'post'){
/* 通常の投稿の記述をここに書く。 */
}else if( $post_type_now == 'XXXXXXX' ){
/* カスタム投稿「XXXXXXX」の記述をここに書く */
}

同じ投稿タイプであるアーカイブ、タクソノミー、詳細ページに特定の処理を行う

if( is_post_type_archive('XXXX') || is_tax('XXXX') || is_singular('XXXX') ) {
/* ここに適用させたい記述を書く。 それぞれのXXXXには投稿のスラッグ、タクソノミースラッグ、投稿タイプのスラッグ。 */
}

現在開いているページに属しているカテゴリー、もしくはタームの一覧を取得(アーカイブページ、タクソノミーページでも使用可能)

if( is_post_type_archive('post') || get_post_type() == 'post' ){
/* 通常の投稿の場合 */
/* 記事に属するカテゴリーの一覧を取得 */
$get_single_term = get_the_category();
} else {
/* カスタム投稿の場合 */
/* 記事に属するタクソノミーを取得 */
$taxonomy_slug = array_keys(get_the_taxonomies());
/* 一番最初のタクソノミーを取得 */
$get_single_tax = get_taxonomy($taxonomy_slug[0]);
/* タクソノミースラッグを取得 */
$get_single_tax_name = $get_single_tax->name;
/* 記事に属するタームの一覧を取得 */
$get_single_term = get_the_terms( $post->ID, $get_single_tax_name );
}
/* カテゴリー、もしくはタームの一覧を取得できたか判定 */
if($get_single_term){
echo '<ul>';
foreach ( $get_single_term as $term ) {
/* 通常の投稿タイプの場合 */
if(is_post_type_archive('post') || get_post_type() == 'post'){
echo '<li><a href="' . get_category_link( $term ) . '">' . $term->name . '</a></li>';
}else{
/* カスタム投稿タイプの場合 */
echo '<li><a href="' . get_term_link( $term . 'タクソノミー名') . '">' . $term->name . '</a></li>';
}
}
echo '</ul>';
}

上記の記述を利用して関連記事のループ処理を行う

$relation_args = array(
'post_type' => get_post_type(),
'paged' => $single_paged,
'posts_per_page' => 3,
'post_status' => 'publish',
'order' => 'DESC',
'post__not_in'=> array( get_the_ID() ),
'tax_query' => array(
array(
'taxonomy' => $get_single_tax_name,
'field' => 'slug',
'terms' => $get_single_term[ 0 ]->slug,
),
),
);
$relation_query = new WP_Query( $relation_args );
if($relation_query->have_posts()):
while ( $relation_query->have_posts() ) : $relation_query->the_post();
/* ここにループ処理を記述 */

endwhile;
endif; wp_reset_postdata();