wordpressでカスタム投稿の実装が必要なことがあり、管理画面にカスタム投稿の実装、そして固定ページでの一覧表示とページネーションの実装までをまとめました。
管理画面にカスタム投稿を実装
function.phpに以下を書くことで管理画面の左メニューに『店舗情報』というカスタム投稿用のリンクが生成されます。
add_action('init', 'add_shop_post_type');
function add_shop_post_type()
{
$title = '店舗情報';
$name = '店舗';
$postName = 'shop';
$params = array(
'labels' => array(
'name' => $title,
'singular_name' => '',
'add_new' => '新規追加',
'add_new_item' => $name.'を新規追加',
'edit_item' => $name.'を編集する',
'new_item' => '新規'.$name,
'all_items' => $name.'一覧',
'view_item' => $name.'の説明を見る',
'search_items' => '検索する',
'not_found' => $name.'が見つかりませんでした。',
'not_found_in_trash' => 'ゴミ箱内に'.$name.'が見つかりませんでした。'
),
'public' => true,
'has_archive' => true,
'supports' => array(
'title',
)
);
register_post_type($postName, $params);
}
『supports』に入力させたい項目を設定します。項目はwiki参照してください。
固定ページに一覧を実装
固定ページには以下の様に記述します。
1ページあたり10件表示をする設定にしていますので、変更したい場合はposts_per_pageの値を変更してください。
get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1,
'post_type' => 'shop',
'posts_per_page' => 10
));
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
?>
ページネーションを実装
続いてページネーションはこのように
max_num_pages = $the_query->max_num_pages;
$args = array (
'prev_text' => '',
'next_text' => '',
'show_all' => false,
'mid_size' => 1,
'type' => 'list'
);
the_posts_pagination($args);
?>