このページのPHPのコードを、function.phpにどうやって移したらいいのか?
教えてください。
https://teratail.com/questions/127984#
以下、コピペしたものです。
PHP
1<?php 2 global $post; 3 $my_posts= get_posts(array( 4 'post_type' => array('post','news','rec'), //post_typeを複数指定 5 'numberposts' => 5 //表示させる記事数 6 )); 7 foreach($my_posts as $post):setup_postdata($post); 8 ?> 9<div class="news_box cFix"> 10 <div class="news_day"><?php echo get_the_date("Y.n.j"); ?></div> 11 <div class="<?php echo esc_html(get_post_type_object(get_post_type())->name); ?>"><?php echo $cat_name; ?></div> 12 <div class="news_txt"> 13 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php echo esc_html(get_post_type_object(get_post_type())->label ); ?> 14 </div> 15</div> 16 17<?php endforeach; ?>
またこういったときの、コピペの方法について、参考ページがあったら教えてください。
PHP
1function whats_new() 2{ 3 4 global $post; 5 $my_posts= get_posts(array( 6 'post_type' => array('post','page'), //post_typeを複数指定 7 'numberposts' => 10 //表示させる記事数 8 )); 9 foreach($my_posts as $post):setup_postdata($post); 10echo ' 11 <div class="news_day">'. get_the_date("Y.n.j") .'</div> 12<div class="'. esc_html(get_post_type_object(get_post_type())->name) .'">'. esc_html(get_post_type_object(get_post_type())->label) 13 ,esc_html(the_category(' ',' ','')) .' </div> 14 <div class="news_txt"><a href="'. get_permalink() .'">'. get_the_title() .'</a></div>' ; 15 16endforeach ; 17 18}
#追記
CHERRYさんの回答でここまで進められました。
2019.8.1 投稿 投稿リンク 2019.8.1 固定ページ 固定ページリンク
と出力されました。
あともう一歩、
下記の様に、投稿の場合のときのみ、仕切りを入れて、かつカテゴリ名を表示させたいです。
2019.8.1 投稿 / カテゴリー名 リンク付き投稿タイトル
こういった形にするには、どうしたらよいでしょうか?
#追記2
hotaruikaさんのコードを使わせてもらいました。
- 投稿と、固定ページと、カスタム投稿タイプportfolio
- foreachのところ、元のコードだと、**Warning: Invalid argument supplied for foreach()が出たので、(array)**を追加しました。
- **最後に、**ショートコード にしました。
すると
2019.8.1 固定ページ 固定ページリンク
foreachに問題があるのか、記事が一つしか表示されなかったです、
実際のコードです。
php
1 2function my_get_posts() 3{ 4 $my_posts= get_posts( 5 array( 6 'post_type' => array('post','page','portfolio'), //post_typeを複数指定 7 'posts_per_page' => 10 //表示させる記事数 8 ) 9 ); 10 return $my_posts; 11} 12 13// 指定した $post_id のカテゴリ一覧を出力する関数 14function my_echo_categories( $post_id ) 15{ 16 $categories = get_the_category(); 17 foreach ( $categories as $category ) 18 { 19 $result=""; 20 $result.='<ul>'; 21 $result.='<li>' . $category->name . '</li>'; 22 $result.='</ul>'; 23 24 return $result; 25 } 26} 27 28 29 30// 取得した投稿データ群($my_posts)を使って出力する関数 31function whats_new( $my_posts ) 32{ 33 // 投稿データ群を1件ずつ処理 34 foreach((array)$my_posts as $post):setup_postdata($post); 35 36 // 投稿データを取得 37 $post_id = $post->ID; 38 $post_type_name = get_post_type_object(get_post_type())->name; 39 $post_type_label = get_post_type_object(get_post_type())->label; 40 $post_date = get_the_date("Y.n.j"); 41 $post_href = get_permalink(); 42 $post_title = get_the_title(); 43 44 // 出力 45 $result =""; 46 $result.='<div>'; 47 $result.='<div class="news_day">'. $post_date .'</div>'; 48 $result.='<div class="'. $post_type_name .'">'. $post_type_label .'</div>'; 49 if( $post_type_name=='post' ){ // 投稿の場合だけカテゴリを出力 50 my_echo_categories( $post_id ); 51 } 52 $result.='<div class="news_txt"><a href="'. $post_href .'">'. $post_title .'</a></div>'; 53 $result.='</div>'; 54 55 56 return $result; 57 endforeach ; 58 59 60 wp_reset_postdata(); 61} 62 63add_shortcode('whats_new2','whats_new');