質問編集履歴

1

実際に使用したコードを追加し、説明も修正しました。

2017/11/29 04:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,41 +2,295 @@
2
2
 
3
3
 
4
4
 
5
+
6
+
7
+
8
+
9
+ ```
10
+
11
+ mypage.php
12
+
13
+
14
+
15
+ <?php if (have_posts()) : ?>
16
+
17
+ <?php while (have_posts()) : the_post(); ?>
18
+
19
+ <?php if (get_post_meta($post->ID, 'block', true)) : ?>
20
+
21
+ <?php if (is_user_logged_in()) : ?>
22
+
23
+ <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
24
+
25
+ <?php endif; ?>
26
+
27
+ <?php else : ?>
28
+
29
+
30
+
31
+ <!--管理者-->
32
+
33
+
34
+
35
+ <?php if ( current_user_can('administrator') ): ?>
36
+
37
+ <p>登録内容:<?php the_author_posts_link(); ?></p>
38
+
39
+
40
+
41
+ <?php endif; ?>
42
+
43
+
44
+
45
+ <!--投稿者-->
46
+
47
+ <?php if ( current_user_can('author') ): ?>
48
+
49
+ <p>登録内容:<?php the_author_posts_link(); ?></p>
50
+
51
+ <?php endif; ?>
52
+
53
+
54
+
55
+
56
+
57
+ <?php endif; ?>
58
+
59
+ <?php endwhile; ?>
60
+
61
+ <?php endif; ?>
62
+
63
+
64
+
65
+
66
+
67
+ コード
68
+
69
+ ```
70
+
5
71
  <?php the_author_posts_link(); ?>
6
72
 
7
- で表示されるような作成者のページへのリンクをマイページというテンプレートで固定ページに表示し、
8
-
9
- author.phpで、現在ログインしているユーザーの投稿(post)とカスタム投稿タイプ(****)の一覧を分けて表示したいと思っております。
73
+ で表示されるような作成者のページへのリンクをマイページというテンプレートで固定ページに表示し、現在ログインしているユーザーの投稿(post)とカスタム投稿タイプ(****)の一覧を分けて表示したいと思っておりますが、上記のコードだと管理者(作成者)しか表示されないので、現在ログインしているユーザーのユーザー名を表示してそのユーザーの投稿の一覧(author.php)にリンクしたいと思っております。
74
+
75
+
76
+
77
+ もちろん、マイページからもう一度リンクでauthorページへリンクしなくてもマイページに投稿のタイトルが表示できればいいことなのですが、わからないのでこうしていました。
78
+
79
+
80
+
81
+
82
+
83
+ authorページにカスタム投稿タイプを表示させるためのコードです
84
+
85
+ ```
86
+
87
+ functions.php
88
+
89
+
90
+
91
+
92
+
93
+ //カスタム投稿を作成者ページに表示
94
+
95
+ function my_search_filter($query) {
96
+
97
+ if (is_author() && $query->is_main_query() ) {
98
+
99
+ $query->set( 'post_type', 'カスタム投稿タイプ' );
100
+
101
+ }
102
+
103
+ }
104
+
105
+ add_action( 'pre_get_posts','my_search_filter' );
106
+
107
+
108
+
109
+ ```
110
+
111
+
10
112
 
11
113
 
12
114
 
13
115
  イメージは
14
116
 
117
+
118
+
119
+ <h2>投稿者Bのカスタム投稿タイプの一覧</h2>
120
+
121
+ ・カスタム投稿タイプの投稿1
122
+
123
+ ・カスタム投稿タイプの投稿2
124
+
125
+ ・カスタム投稿タイプの投稿3
126
+
127
+
128
+
15
129
  <h2>投稿者Bの投稿の一覧</h2>
16
130
 
17
131
  ・投稿1
18
132
 
19
- ・投稿2
20
-
21
-
22
-
23
- <h2>投稿者Bのカスタム投稿タイプの一覧</h2>
24
-
25
- ・カスタム投稿タイプの投稿1
26
-
27
- ・カスタム投稿タイプの投稿2
28
-
29
- ・カスタム投稿タイプの投稿3
30
-
31
133
 
32
134
 
33
135
  という感じです。
34
136
 
137
+ ・カスタム投稿タイプは複数の投稿があります
138
+
139
+ ・投稿(post)は1つだけ
140
+
141
+
142
+
143
+ ```
144
+
145
+ author.php
146
+
147
+
148
+
149
+ //カスタム投稿タイプの投稿の一覧表示
150
+
151
+ <?php if(have_posts()): ?>
152
+
153
+
154
+
155
+ <ul>
156
+
157
+ <?php while(have_posts()): the_post();?>
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+ <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
166
+
167
+
168
+
169
+
170
+
171
+ <?php endwhile;?>
172
+
173
+ </ul>
174
+
175
+
176
+
177
+
178
+
179
+ <?php else : ?>
180
+
181
+ 投稿がありません。
182
+
183
+ <?php endif; ?>
184
+
185
+
186
+
187
+
188
+
189
+ //投稿(post)の表示
190
+
191
+ <?php $userId = get_query_var('author'); ?>
192
+
193
+ <?php $user = get_userdata($userId); ?>
194
+
195
+ <h3 style="margin-top:30px;">登録内容</h3>
196
+
197
+
198
+
199
+ <?php if (!empty($user->description)) { ?>
200
+
201
+ <p><?php echo $user->description; ?></p>
202
+
203
+ <?php } ?>
204
+
205
+
206
+
207
+ <?php $posts = get_posts("author=$userId&orderby=date&post_type=post&numberposts=1"); ?>
208
+
209
+ <?php if (!empty($posts)) { ?>
210
+
211
+
212
+
213
+ <?php foreach( $posts as $post ) : setup_postdata($post); ?>
214
+
215
+ 登録日:<?php echo get_the_date("Y/n/j");?> <br />登録名:<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
216
+
217
+ <?php endforeach; ?>
218
+
219
+ <?php wp_reset_postdata(); ?>
220
+
221
+
222
+
223
+ <?php } ?>
224
+
225
+ コード
226
+
227
+ ```
228
+
229
+
230
+
231
+ 投稿を1つだけ表示させるコードは
232
+
233
+ https://engineer.blog.lancers.jp/2017/05/post_list_of_author/
234
+
235
+ こちらを参考に致しました。
236
+
237
+
238
+
239
+
240
+
241
+ ここまででは、現在ログインしているユーザーの投稿が取得できないので、
242
+
243
+ 以下のコードを入れてみました。
244
+
35
245
 
36
246
 
37
247
  https://teratail.com/questions/62292
38
248
 
39
- こちらも参考にさせて頂きauthor.phpを書き換えてみましたが、
249
+ こちらも参考にさせて頂きauthor.phpを書き換えてみました
250
+
251
+ ```
252
+
253
+
254
+
255
+ <?php $author_id = $curauth->ID; ?><!--現在の投稿者ID を変数に代入-->
256
+
257
+ <?php query_posts('author='.$author_id.'&showposts=20&post_type=column');?>
258
+
259
+ <?php if ( have_posts() ): while ( have_posts() ): the_post(); ?>
260
+
261
+ <!– Start: Post –>
262
+
263
+ <div>
264
+
265
+ <h3>“><?php the_title(); ?></h3>
266
+
267
+ <p>
268
+
269
+ <span><?php the_time(‘Y年m月d日’); ?></span>
270
+
271
+ <span><?php the_author(); ?></span>
272
+
273
+ </p>
274
+
275
+
276
+
277
+ </div>
278
+
279
+ <!– End: Post –>
280
+
281
+ <?php endwhile; endif; ?>
282
+
283
+
284
+
285
+
286
+
287
+ コード
288
+
289
+ ```
290
+
291
+
292
+
293
+ こちらのコードですと、
40
294
 
41
295
  管理者A
42
296
 
@@ -52,4 +306,8 @@
52
306
 
53
307
 
54
308
 
309
+
310
+
311
+
312
+
55
- よろしくお願いします。
313
+ お手数ですがよろしくお願いします。