質問編集履歴

1

ソースコードの公開

2020/02/22 06:46

投稿

nekora
nekora

スコア501

test CHANGED
File without changes
test CHANGED
@@ -72,8 +72,588 @@
72
72
 
73
73
 
74
74
 
75
- 各種コードなどは、関連記事のほうにありますので二重投稿はまず思い、ここは割愛させて
76
-
77
- いただきます。お手数ですが、関連記事の方を参照いただけたら幸いです。
78
-
79
- よろしくお願いしす。m(_ _)m
75
+ 二重投稿ならないとの事だったのソースを公開させていただきます。
76
+
77
+
78
+
79
+ ブログ一覧で最初に読み込れるテンプレート
80
+
81
+ カテゴリーテンプレート (category.php)
82
+
83
+ ```php
84
+
85
+ <?php
86
+
87
+ /**
88
+
89
+ * @author
90
+
91
+ */
92
+
93
+ //setcookie('tag_title' , "");
94
+
95
+ //$tag_title = "";
96
+
97
+ //setcookie('tag_title' , $tag_title ,0 , "/" );
98
+
99
+
100
+
101
+ global $siteurl, $tempurl,$topparents_slug,$topparents_id,$post;
102
+
103
+ get_header();
104
+
105
+ $inst_tag_title = tag_title_handler::getInstance();
106
+
107
+ $inst_tag_title->set_tag_title("");?>
108
+
109
+ <div class="wrap clearfix contents">
110
+
111
+ <div class="contents-head">
112
+
113
+ <?php get_breadcrumbs(); ?>
114
+
115
+ <h1><?php single_cat_title();?></h1>
116
+
117
+ </div>
118
+
119
+ <aside class="contents-side notPC">
120
+
121
+ <?php include 'office/blog-list.php'; ?>
122
+
123
+ </aside>
124
+
125
+ <article class="contents-main">
126
+
127
+ <div class="posts clearfix">
128
+
129
+ <?php if (have_posts()):
130
+
131
+ while (have_posts()):
132
+
133
+ the_post(); ?>
134
+
135
+ <div class="content-archive-box">
136
+
137
+ <?php get_template_part('content-archive'); ?>
138
+
139
+ </div>
140
+
141
+ <?php
142
+
143
+ endwhile;
144
+
145
+ endif;
146
+
147
+ ?>
148
+
149
+ </div>
150
+
151
+ <div class="pager clearfix">
152
+
153
+ <?php
154
+
155
+ global $wp_rewrite;
156
+
157
+ $paginate_base = get_pagenum_link(1);
158
+
159
+ if (strpos($paginate_base, '?') || !$wp_rewrite->using_permalinks()) {
160
+
161
+ $paginate_format = '';
162
+
163
+ $paginate_base = add_query_arg('paged', '%#%');
164
+
165
+ } else {
166
+
167
+ $paginate_format = (substr($paginate_base, -1, 1) == '/' ? '' : '/').
168
+
169
+ user_trailingslashit('page/%#%/', 'paged');
170
+
171
+ $paginate_base .= '%_%';
172
+
173
+ }
174
+
175
+ echo paginate_links(array(
176
+
177
+ 'base' => $paginate_base,
178
+
179
+ 'format' => $paginate_format,
180
+
181
+ 'total' => $wp_query->max_num_pages,
182
+
183
+ 'mid_size' => 4,
184
+
185
+ 'current' => ($paged ? $paged : 1),
186
+
187
+ 'prev_text' => '«',
188
+
189
+ 'next_text' => '»',
190
+
191
+ 'type' => 'list',
192
+
193
+ )); ?>
194
+
195
+ </div>
196
+
197
+ </article>
198
+
199
+ <aside class="contents-side isPC">
200
+
201
+ <?php include 'office/blog-list.php'; ?>
202
+
203
+ </aside>
204
+
205
+ <!-- pager -->
206
+
207
+ </div>
208
+
209
+ <?php get_footer(); ?>
210
+
211
+ ```
212
+
213
+
214
+
215
+ 投稿をタグで絞り込むためのサイダー
216
+
217
+ blog-list.php (office/blog-list.php)
218
+
219
+ 制限に引っかかるので関連記事のソースをご覧ください。
220
+
221
+
222
+
223
+ 記事一覧で個別記事の概要を表示するテンプレート
224
+
225
+ content-archive.php
226
+
227
+ ```php
228
+
229
+ <?php global $tag_title; ?>
230
+
231
+ <article class="blogs">
232
+
233
+ <div class="date">
234
+
235
+ <time pubdate="pubdate" datetime="<?php the_time('Y-m-d'); ?>" class="entry-date">
236
+
237
+ <?php the_time(get_option('date_format')); ?> <small class="nobrAs">タグ:<wbr><?php the_tags('', ', '); ?></small>
238
+
239
+ </time>
240
+
241
+ </div>
242
+
243
+ <a href="<?php the_permalink(); ?>" class="cleatLink">
244
+
245
+ <?php
246
+
247
+ if(preg_match('/<img.*?src=(["\'])(.+?)\1.*?>/i', $post->post_content, $image_url)){
248
+
249
+ echo '<img src="'. $image_url[2] .'">';
250
+
251
+ } else {
252
+
253
+ echo '<img src="'.get_template_directory_uri().'/images/secondlp/header-image/header.png">';
254
+
255
+ }
256
+
257
+ ?>
258
+
259
+ <h2><?php the_title(); ?></h2>
260
+
261
+ <div class="isPC excerpt"><?php the_excerpt(); ?></div>
262
+
263
+ </a>
264
+
265
+ </article>
266
+
267
+ ```
268
+
269
+
270
+
271
+ タグで絞り込まれた記事一覧を表示するテンプレート
272
+
273
+ 投稿タグテンプレート (tag.php)
274
+
275
+ ```php
276
+
277
+ <?php
278
+
279
+ /**
280
+
281
+ * @author
282
+
283
+ */
284
+
285
+ //setcookie('tag_title' , "");
286
+
287
+ //$tag_title = single_cat_title("", false);
288
+
289
+ //setcookie('tag_title' , $tag_title ,0 , "/" );
290
+
291
+ global $siteurl, $tempurl,$topparents_slug,$topparents_id,$post,$tag_title;
292
+
293
+ get_header();
294
+
295
+ $inst_tag_title = tag_title_handler::getInstance();
296
+
297
+ $tmp_tag_title = single_cat_title("", false);
298
+
299
+ $inst_tag_title->set_tag_title($tmp_tag_title);
300
+
301
+ $inst_tag_title = tag_title_handler::getInstance();
302
+
303
+ $tag_title_array = $inst_tag_title->get_tag_title();
304
+
305
+ echo "<pre>";
306
+
307
+ echo "tag.php get\n";
308
+
309
+ var_dump($tag_title_array);
310
+
311
+ echo "</pre>";
312
+
313
+ ?>
314
+
315
+ <div class="wrap clearfix contents">
316
+
317
+ <div class="contents-head">
318
+
319
+ <?php get_breadcrumbs(); ?>
320
+
321
+ <h1><?php single_cat_title();?></h1>
322
+
323
+ </div>
324
+
325
+ <article class="contents-main">
326
+
327
+ <div class="posts clearfix">
328
+
329
+ <?php if (have_posts()):
330
+
331
+ while (have_posts()):
332
+
333
+ the_post(); ?>
334
+
335
+ <div class="content-archive-box">
336
+
337
+ <?php get_template_part('content-archive'); ?>
338
+
339
+ </div>
340
+
341
+ <?php
342
+
343
+ endwhile;
344
+
345
+ endif;
346
+
347
+ ?>
348
+
349
+ </div>
350
+
351
+ <br>
352
+
353
+ <div class="pager">
354
+
355
+ <?php global $wp_rewrite;
356
+
357
+ $paginate_base = get_pagenum_link(1);
358
+
359
+ if (strpos($paginate_base, '?') || !$wp_rewrite->using_permalinks()) {
360
+
361
+ $paginate_format = '';
362
+
363
+ $paginate_base = add_query_arg('paged', '%#%');
364
+
365
+ } else {
366
+
367
+ $paginate_format = (substr($paginate_base, -1, 1) == '/' ? '' : '/').
368
+
369
+ user_trailingslashit('page/%#%/', 'paged');
370
+
371
+ $paginate_base .= '%_%';
372
+
373
+ }
374
+
375
+ echo paginate_links(array(
376
+
377
+ 'base' => $paginate_base,
378
+
379
+ 'format' => $paginate_format,
380
+
381
+ 'total' => $wp_query->max_num_pages,
382
+
383
+ 'mid_size' => 4,
384
+
385
+ 'current' => ($paged ? $paged : 1),
386
+
387
+ 'prev_text' => '«',
388
+
389
+ 'next_text' => '»',
390
+
391
+ )); ?>
392
+
393
+ </div>
394
+
395
+ </article>
396
+
397
+ <aside class="contents-side">
398
+
399
+ <?php include 'office/blog-list.php'; ?>
400
+
401
+ </aside>
402
+
403
+ <!-- pager -->
404
+
405
+ <div class="detail_btn">
406
+
407
+ <p class="contents-main-gotoppage clearboth"><a href="/category/blog/">すべてのブログ一覧へ戻る</a></p>
408
+
409
+ </div>
410
+
411
+ &nbsp;
412
+
413
+ </div>
414
+
415
+ <?php get_footer(); ?>
416
+
417
+ ```
418
+
419
+
420
+
421
+ タグで絞りまれた記事一覧から個別記事を選んだ記事を表示するテンプレート
422
+
423
+ 個別投稿 (single.php)
424
+
425
+ ```php
426
+
427
+ <?php global $post,$tag_title_array;?>
428
+
429
+ <?php get_header(); ?>
430
+
431
+ <?php $inst_tag_title = tag_title_handler::getInstance();
432
+
433
+ $tag_title_array = $inst_tag_title->get_tag_title();
434
+
435
+ echo "single in FULLNAME=" . $tag_title_array['full_name'] . "TAG=" . $tag_title_array['tag'] . "RETURN=" . $tag_title_array['return'];?>
436
+
437
+ <div class="wrap clearfix contents">
438
+
439
+
440
+
441
+ <?php get_breadcrumbs(); ?>
442
+
443
+
444
+
445
+ <?php
446
+
447
+ if (empty($tag_title_array)) {
448
+
449
+ //echo "enter tag empty";
450
+
451
+ if(have_posts()){
452
+
453
+ while (have_posts()){
454
+
455
+ the_post();
456
+
457
+ get_template_part('inc/content');
458
+
459
+ }
460
+
461
+ }
462
+
463
+ } else {
464
+
465
+ //echo "enter tag enabled";
466
+
467
+ //echo "<pre>";
468
+
469
+ //var_dump(get_tag_title());
470
+
471
+ //echo "</pre>";
472
+
473
+ //echo get_tag_title()['tag'];
474
+
475
+ $args = array(
476
+
477
+ 'post_type' => 'post',
478
+
479
+ 'orderby' => 'date', // 日付でソート
480
+
481
+ 'order' => 'DESC', // DESCで最新から表示、ASCで最古から表示
482
+
483
+ 'tag' => $tag_title_array['tag'] // 表示したいタグのスラッグを指定
484
+
485
+ );
486
+
487
+ global $post;
488
+
489
+ $post = new WP_Query( $args );
490
+
491
+ //echo "<pre>";
492
+
493
+ //var_dump($post);
494
+
495
+ //echo "</pre>";
496
+
497
+ if(have_posts()){
498
+
499
+ while (have_posts()){
500
+
501
+ the_post();
502
+
503
+ get_template_part('inc/content');
504
+
505
+ }
506
+
507
+ }
508
+
509
+ }
510
+
511
+ wp_reset_postdata();
512
+
513
+ ?>
514
+
515
+ </div>
516
+
517
+ <?php get_footer(); ?>
518
+
519
+ ```
520
+
521
+
522
+
523
+ コンテンツを表示するテンプレート
524
+
525
+ content.php (inc/content.php)
526
+
527
+ 制限に引っかかるので関連記事のソースをご覧ください。
528
+
529
+
530
+
531
+ 同じタグが付いた記事間を移動するためのページゃー
532
+
533
+ pager.php (inc/pager.php)
534
+
535
+ 制限に引っかかるので関連記事の自己解決レスをご覧ください。
536
+
537
+
538
+
539
+ functions.phpに用意したシングルトンクラス
540
+
541
+ ```php
542
+
543
+ // final キーワードで派生クラスの生成を禁ずる
544
+
545
+ final class tag_title_handler
546
+
547
+ {
548
+
549
+ // 唯一のインスタンスを保持する
550
+
551
+ private static $_instance;
552
+
553
+
554
+
555
+ private static $_tag_title = "";
556
+
557
+
558
+
559
+ // コンストラクタ
560
+
561
+ // tag_title_handler クラスインスタンスの生成は外部から禁止
562
+
563
+ private function __construct() { }
564
+
565
+
566
+
567
+ // __clone マジックメソッド
568
+
569
+ // tag_title_handler クラスのクローンは外部から禁止
570
+
571
+ private function __clone() { }
572
+
573
+
574
+
575
+ /*
576
+
577
+ * 常に同じインスタンスを返す。
578
+
579
+ * 外部からインスタンスを取得する唯一の方法を提供する
580
+
581
+ */
582
+
583
+ final public static function getInstance(){
584
+
585
+ if(is_null(self::$_instance)){
586
+
587
+ echo "_instance is null";
588
+
589
+ self::$_instance = new self();
590
+
591
+ }
592
+
593
+ return self::$_instance;
594
+
595
+ }
596
+
597
+
598
+
599
+ // tag_titleを設定する
600
+
601
+ public function set_tag_title($param)
602
+
603
+ {
604
+
605
+ $this->_tag_title = $param;
606
+
607
+ }
608
+
609
+
610
+
611
+ // tag_titleを取得する
612
+
613
+ public function get_tag_title()
614
+
615
+ {
616
+
617
+ //echo 'enter tag_title_handler get' . "\n";
618
+
619
+ //echo 'tag_title=' . $this->_tag_title . "\n";
620
+
621
+ if ( empty( $this->_tag_title ) ) {
622
+
623
+ return array();
624
+
625
+ }
626
+
627
+ $office_tag_array = [
628
+
629
+ '就職'=>['tag'=>'syusyoku','full_name'=>'就職','return'=>'/tag/syusyoku/'],
630
+
631
+ 'イベント'=>['tag'=>'event','full_name'=>'イベント','return'=>'/tag/event/'],
632
+
633
+ 'プログラム'=>['tag'=>'program','full_name'=>'プログラム','return'=>'/tag/program/'],
634
+
635
+ '板橋'=>['tag'=>'itabashi','full_name'=>'板橋','return'=>'/tag/itabashi/'],
636
+
637
+ '高田馬場'=>['tag'=>'takadanobaba','full_name'=>'高田馬場','return'=>'/tag/takadanobaba/'],
638
+
639
+ '小岩'=>['tag'=>'koiwa','full_name'=>'小岩','return'=>'/tag/koiwa/'],
640
+
641
+ '葛西駅前'=>['tag'=>'kasaiekimae','full_name'=>'葛西駅前','return'=>'/tag/kasaiekimae/'],
642
+
643
+ '梅島'=>['tag'=>'umejima','full_name'=>'梅島','return'=>'/tag/umejima/']
644
+
645
+ ];
646
+
647
+ $temp_array = $office_tag_array[$this->_tag_title];
648
+
649
+ $return_array = ['full_name'=>$temp_array['full_name'] , 'tag'=>$temp_array['tag'] , 'return'=>$temp_array['return']];
650
+
651
+ return $return_array;
652
+
653
+ }
654
+
655
+ }
656
+
657
+
658
+
659
+ ```