質問するログイン新規登録

質問編集履歴

2

追記2

2019/09/19 04:59

投稿

_magurochan
_magurochan

スコア13

title CHANGED
File without changes
body CHANGED
@@ -25,8 +25,6 @@
25
25
 
26
26
  またこういったときの、コピペの方法について、参考ページがあったら教えてください。
27
27
 
28
- # 追記
29
-
30
28
  ```PHP
31
29
  function whats_new()
32
30
  {
@@ -47,7 +45,7 @@
47
45
 
48
46
  }
49
47
  ```
50
-
48
+ #追記
51
49
  CHERRYさんの回答でここまで進められました。
52
50
 
53
51
  ```
@@ -69,4 +67,86 @@
69
67
  リンク付き投稿タイトル
70
68
  ```
71
69
 
72
- こういった形にするには、どうしたらよいでしょうか?
70
+ こういった形にするには、どうしたらよいでしょうか?
71
+
72
+ #追記2
73
+ hotaruikaさんのコードを使わせてもらいました。
74
+
75
+ - 投稿と、固定ページと、カスタム投稿タイプportfolio
76
+ - **foreach**のところ、元のコードだと、**Warning: Invalid argument supplied for foreach()**が出たので、**(array)**を追加しました。
77
+ - **最後に、**ショートコード にしました。
78
+
79
+ すると
80
+ ```
81
+ 2019.8.1
82
+ 固定ページ
83
+ 固定ページリンク
84
+ ```
85
+ **foreach**に問題があるのか、記事が一つしか表示されなかったです、
86
+
87
+ 実際のコードです。
88
+ ```php
89
+
90
+ function my_get_posts()
91
+ {
92
+ $my_posts= get_posts(
93
+ array(
94
+ 'post_type' => array('post','page','portfolio'), //post_typeを複数指定
95
+ 'posts_per_page' => 10 //表示させる記事数
96
+ )
97
+ );
98
+ return $my_posts;
99
+ }
100
+
101
+ // 指定した $post_id のカテゴリ一覧を出力する関数
102
+ function my_echo_categories( $post_id )
103
+ {
104
+ $categories = get_the_category();
105
+ foreach ( $categories as $category )
106
+ {
107
+ $result="";
108
+ $result.='<ul>';
109
+ $result.='<li>' . $category->name . '</li>';
110
+ $result.='</ul>';
111
+
112
+ return $result;
113
+ }
114
+ }
115
+
116
+
117
+
118
+ // 取得した投稿データ群($my_posts)を使って出力する関数
119
+ function whats_new( $my_posts )
120
+ {
121
+ // 投稿データ群を1件ずつ処理
122
+ foreach((array)$my_posts as $post):setup_postdata($post);
123
+
124
+ // 投稿データを取得
125
+ $post_id = $post->ID;
126
+ $post_type_name = get_post_type_object(get_post_type())->name;
127
+ $post_type_label = get_post_type_object(get_post_type())->label;
128
+ $post_date = get_the_date("Y.n.j");
129
+ $post_href = get_permalink();
130
+ $post_title = get_the_title();
131
+
132
+ // 出力
133
+ $result ="";
134
+ $result.='<div>';
135
+ $result.='<div class="news_day">'. $post_date .'</div>';
136
+ $result.='<div class="'. $post_type_name .'">'. $post_type_label .'</div>';
137
+ if( $post_type_name=='post' ){ // 投稿の場合だけカテゴリを出力
138
+ my_echo_categories( $post_id );
139
+ }
140
+ $result.='<div class="news_txt"><a href="'. $post_href .'">'. $post_title .'</a></div>';
141
+ $result.='</div>';
142
+
143
+
144
+ return $result;
145
+ endforeach ;
146
+
147
+
148
+ wp_reset_postdata();
149
+ }
150
+
151
+ add_shortcode('whats_new2','whats_new');
152
+ ```

1

現在の状況と、具体例を追記しました。

2019/09/19 04:59

投稿

_magurochan
_magurochan

スコア13

title CHANGED
File without changes
body CHANGED
@@ -23,4 +23,50 @@
23
23
  <?php endforeach; ?>
24
24
  ```
25
25
 
26
- またこういったときの、コピペの方法について、参考ページがあったら教えてください。
26
+ またこういったときの、コピペの方法について、参考ページがあったら教えてください。
27
+
28
+ # 追記
29
+
30
+ ```PHP
31
+ function whats_new()
32
+ {
33
+
34
+ global $post;
35
+ $my_posts= get_posts(array(
36
+ 'post_type' => array('post','page'), //post_typeを複数指定
37
+ 'numberposts' => 10 //表示させる記事数
38
+ ));
39
+ foreach($my_posts as $post):setup_postdata($post);
40
+ echo '
41
+ <div class="news_day">'. get_the_date("Y.n.j") .'</div>
42
+ <div class="'. esc_html(get_post_type_object(get_post_type())->name) .'">'. esc_html(get_post_type_object(get_post_type())->label)
43
+ ,esc_html(the_category(' ',' ','')) .' </div>
44
+ <div class="news_txt"><a href="'. get_permalink() .'">'. get_the_title() .'</a></div>' ;
45
+
46
+ endforeach ;
47
+
48
+ }
49
+ ```
50
+
51
+ CHERRYさんの回答でここまで進められました。
52
+
53
+ ```
54
+ 2019.8.1
55
+ 投稿
56
+ 投稿リンク
57
+
58
+ 2019.8.1
59
+ 固定ページ
60
+ 固定ページリンク
61
+ ```
62
+ と出力されました。
63
+
64
+ あともう一歩、
65
+ 下記の様に、投稿の場合のときのみ、仕切りを入れて、かつカテゴリ名を表示させたいです。
66
+ ```
67
+ 2019.8.1
68
+ 投稿 / カテゴリー名
69
+ リンク付き投稿タイトル
70
+ ```
71
+
72
+ こういった形にするには、どうしたらよいでしょうか?