今現在wordpressテーマcocoonを使ってカスタム投稿タイプを作りました。
そしてフロントページにカスタム投稿タイプのショートコードを貼り付け、新着記事を表示したいです。
cocoonではディフォルトの設定で新着記事や人気記事と言ったショートコードがありますが、
これらのショートコードを入れてしまうと、カスタム投稿タイプの新着記事は表示されずに、
ディフォルトにある投稿から新着記事や人気記事ひっぱりだしてしまいます。
試したこと
①まずはカスタム投稿タイプを作りました。
php
1function create_post_type_achievements() { 2 $Supports = [ 3 'title', 4 'editor', 5 'thumbnail', 6 ]; 7 register_post_type( 'achievements', //カスタム投稿タイプのスラッグ 8 array( 9 'label' => '制作実績', //カスタム投稿タイプ名 10 'labels' => array( 11 'all_items' => '制作実績一覧' //カスタム投稿タイプ一覧名 12 ), 13 'public' => true, 14 'has_archive' => true, 15 'menu_position' => 6, 16 'supports' => $Supports 17 ) 18 ); 19 $supports = array( 20 'label' => ('カテゴリー'), 21 'rewrite' => array('slug' => 'genre'), 22 'hierarchical' => true, 23 ); 24 } 25 add_action( 'init', 'create_post_type_achievements' );
②そして、こちら→https://etoblog.net/register-post-type/の記事を参考にしつつ、
カスタム投稿タイプの記事を呼び出せるコードを作りました。ですが、カスタム投稿タイプの新着記事は表示されません。
PHP
1/* 新着記事を読みこむショートコード[add_new_infopage] */ 2function add_new_infopage_func($atts){ 3 ob_start(); 4?> 5<ul> 6 <?php $args = array( 7 'numberposts' => 4, // 表示する記事の数 8 'post_type' => 'achievements' // 投稿タイプ名 9 // 条件を追加する場合はここに追記 10 ); 11 $customPosts = get_posts($args); 12 if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); 13 ?> 14 <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 15 16 <?php endforeach; ?> 17 18 <?php else : //記事が無い場合 ?> 19 <p>表示する記事がありません。</p> 20 <?php endif; 21 wp_reset_postdata(); //クエリのリセット ?> 22</ul> 23<?php 24 return ob_get_clean(); 25} 26add_shortcode('add_new_infopage', 'add_new_infopage_func');
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー