前提・実現したいこと
wordpressのカスタム投稿のカテゴリーの記事一覧を表示させたいのですが、なかなかうまくいきません
wp管理画面で作成したメニューのカテゴリーをクリックしたら、その先のページにそのカテゴリーの記事が一覧で表示されるイメージです。
参考にしたサイト:
https://sunny247.xyz/?p=275
他にも色々なサイトを見ました。。。
ここまで表示されないと、カスタム投稿まわりのコードを書いていたときに、投稿タイプの名前をseminarから変えたり、戻したりしながら記事を追加したり、などいろいろ触っていたので、変な記事データがDBに保存されてしまったのかなと思ったのですが、DBの見方がわからず完璧に行き詰まった状態です。(そもそもwpのコードが違う可能性もあるし、自分ではどこがおかしいのかが分からない状態です)
ご教授お願い致します。
category.php
<?php get_header(); ?> <div class="l-wrapper"> <div> <?php $term_name = single_term_title( '', false ); echo $term_name; ?> </div> <?php // タクソノミ取得 $catargs = array( 'taxonomy' => 'seminar' ); $catlists = get_categories( $catargs ); foreach($catlists as $cat) : ?> <div class="<?php echo $cat->slug; ?>"> <h1><?php echo $cat->name; ?></h1> <?php $args = array( 'posts_per_page'=> -1, 'post_type' => 'seminar', 'seminar' => $cat->slug, 'orderby' => 'date', 'order' => 'DESC' ); $my_posts = get_posts( $args ); if ( $my_posts ) { // 該当する投稿があったら foreach ( $my_posts as $post ) : setup_postdata( $post ); ?> <div> <h2>Q:<?php the_title(); ?></h2> <p>A:<?php the_content(); ?></p> </div> <?php endforeach; } else { echo 'このカテゴリに投稿はありません'; } wp_reset_postdata(); ?> </div> <?php endforeach; ?> </div> <?php get_footer(); ?>
function.php
<?php add_theme_support('title-tag'); add_theme_support('html5', array('search-form', 'comment-form', 'comment-list', 'gallery', 'caption')); add_theme_support('automatic-feed-links'); add_theme_support('post-thumbnails'); // ================================================================================ // メニューを登録 // ================================================================================ // wp_nav_menu()で呼び出し register_nav_menu('header-nav', 'header_nav'); register_nav_menu('footer-nav', 'footer_nav'); // ================================================================================ // ダッシュボード サイドバー 不要な項目を削除 // ================================================================================ function remove_menus () { global $menu; unset($menu[5]); // 投稿 unset($menu[25]); // コメント } add_action('admin_menu', 'remove_menus'); // ================================================================================ // jsファイル読み込み // ================================================================================ function twpp_enqueue_scripts() { wp_enqueue_script( 'main-script', get_template_directory_uri() . '/application.js', array(), false, true ); } add_action( 'wp_enqueue_scripts', 'twpp_enqueue_scripts' ); // ================================================================================ // ビジュアルエディタにcss適用 // ================================================================================ function add_editor_style_cb() { add_editor_style(); } add_action('admin_init', 'add_editor_style_cb'); // ================================================================================ // カスタム投稿タイプ追加 // ================================================================================ add_action( 'init', 'my_post_type' ); function my_post_type() { $Supports = [ 'title', 'editor', 'custom-fields', 'revisions' ]; register_post_type( 'seminar', array( 'label' => 'セミナー', 'labels' => array( 'name' => 'セミナー', 'singular_name' => 'セミナー', 'all_items' => 'セミナー一覧', ), 'public' => true, 'has_archive' => true, 'menu_position' => 5, 'supports' => $Supports, 'taxonomies' => array( 'category', 'post_tag' ), 'rewrite' => array('with_front' => false), 'hierarchical' => true, ) ); } add_filter( 'post_type_link', 'my_post_type_link', 1, 2 ); function my_post_type_link( $link, $post ){ if ( 'seminar' === $post->post_type ) { return home_url( '/seminar/' . $post->ID ); } else { return $link; } } add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array' ); function my_rewrite_rules_array( $rules ) { $new_rules = array( 'seminar/([0-9]+)/?$' => 'index.php?post_type=seminar&p=$matches[1]', ); return $new_rules + $rules; } // ================================================================================ // ぱんくず実装 // ================================================================================ if ( ! function_exists( 'custom_breadcrumb' ) ) { function custom_breadcrumb( $wp_obj = null ) { // トップページでは何も出力しない if ( is_home() || is_front_page() ) return false; //そのページのWPオブジェクトを取得 $wp_obj = $wp_obj ?: get_queried_object(); echo '<div class="c-breadcrumb">'. '<ol class="c-breadcrumb__lists">'. '<li class="c-breadcrumb__item">'. '<a href="'. home_url() .'"><span>TOP</span></a>'. '</li>'; 文字数制限のため以下省略... ※残りはパンくずの記述のみ
$catargs = array(
'taxonomy' => 'seminar'
);
で seminar というカスタムタクソノミーを指定されていますが、これは登録されていますでしょうか?
カスタムタクソノミーの存在を初めて知りました。カテゴリーをカスタムタクソノミーに変更して繰り返し文を変えたら無事表示されました。ありがとうございました。
回答1件
あなたの回答
tips
プレビュー