質問編集履歴
1
変更したコードを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -290,6 +290,198 @@
|
|
290
290
|
|
291
291
|
|
292
292
|
|
293
|
+
### 追記12.4
|
294
|
+
|
295
|
+
回答にて出力バッファをご教授いただき、下記サイトを参考に実装をしてみました。
|
296
|
+
|
297
|
+
[wordpress投稿記事でPHPを使う方法](https://webmemo.tokyo/articles/make-wp-shortcode/#pos4-1)
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
すると、出力自体はできているのですが、
|
302
|
+
|
303
|
+
ループ中のカスタムフィールド 部分の出力がされず、
|
304
|
+
|
305
|
+
どこが悪いのでしょうか。。。
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
出力ショートコード↓
|
312
|
+
|
313
|
+
```出力ショートコード
|
314
|
+
|
315
|
+
[get_tag_query result_meta_key=hogehoge meta_value=hoge result_post_type=news result_post_num=8]
|
316
|
+
|
317
|
+
```
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
functions.php↓
|
322
|
+
|
323
|
+
```functions.php
|
324
|
+
|
325
|
+
// Include ShortCode
|
326
|
+
|
327
|
+
require(dirname(__FILE__) . '/template-parts/shortcode.php');
|
328
|
+
|
329
|
+
```
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
shotcode.php↓
|
334
|
+
|
335
|
+
```shotcode.php
|
336
|
+
|
337
|
+
<?php
|
338
|
+
|
339
|
+
function get_tag_query_func($atts)
|
340
|
+
|
341
|
+
{
|
342
|
+
|
343
|
+
// 引数処理
|
344
|
+
|
345
|
+
extract(shortcode_atts(array(
|
346
|
+
|
347
|
+
'result_post_type' => '',
|
348
|
+
|
349
|
+
'result_post_num' => '-1',
|
350
|
+
|
351
|
+
'result_meta_key' => '',
|
352
|
+
|
353
|
+
'result_meta_value' => '',
|
354
|
+
|
355
|
+
), $atts, 'get_tag_query'));
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
ob_start();
|
362
|
+
|
363
|
+
// 投稿取得処理
|
364
|
+
|
365
|
+
$args = array(
|
366
|
+
|
367
|
+
'post_type' => $result_post_type,
|
368
|
+
|
369
|
+
'posts_per_page' => $result_post_num,
|
370
|
+
|
371
|
+
'meta_key' => $result_meta_key, //カスタムフィールドのキー
|
372
|
+
|
373
|
+
'meta_value' => $result_meta_value, //カスタムフィールドの値
|
374
|
+
|
375
|
+
'meta_compare' => 'LIKE', //'meta_value'のテスト演算子
|
376
|
+
|
377
|
+
);
|
378
|
+
|
379
|
+
$tagPosts = get_posts($args);
|
380
|
+
|
381
|
+
?>
|
382
|
+
|
383
|
+
<?php if ($tagPosts) : foreach ($tagPosts as $post) : setup_postdata($post); ?>
|
384
|
+
|
385
|
+
|
386
|
+
|
387
|
+
<a class="post_item" href="<?php the_permalink(); ?>">
|
388
|
+
|
389
|
+
<?php if (post_custom('news_pic')) : // 入力がある場合
|
390
|
+
|
391
|
+
?>
|
392
|
+
|
393
|
+
<figure class="news_pic">
|
394
|
+
|
395
|
+
<img src="<?php the_field('news_pic'); ?>" alt="">
|
396
|
+
|
397
|
+
</figure>
|
398
|
+
|
399
|
+
<?php else : // 入力がない場合
|
400
|
+
|
401
|
+
?>
|
402
|
+
|
403
|
+
<figure class="news_pic">
|
404
|
+
|
405
|
+
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/common/noimage.png" alt="">
|
406
|
+
|
407
|
+
</figure>
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
<?php endif; ?>
|
412
|
+
|
413
|
+
<div class="news_info">
|
414
|
+
|
415
|
+
<h3 class="news_title">
|
416
|
+
|
417
|
+
<?php
|
418
|
+
|
419
|
+
if (mb_strlen($post->post_title, 'UTF-8') > 21) {
|
420
|
+
|
421
|
+
$title = mb_substr($post->post_title, 0, 21, 'UTF-8');
|
422
|
+
|
423
|
+
echo $title . '……';
|
424
|
+
|
425
|
+
} else {
|
426
|
+
|
427
|
+
echo $post->post_title;
|
428
|
+
|
429
|
+
}
|
430
|
+
|
431
|
+
?>
|
432
|
+
|
433
|
+
</h3>
|
434
|
+
|
435
|
+
<p class="news_area"><?php the_field('news_area'); ?></p>
|
436
|
+
|
437
|
+
<ul class="news_cat">
|
438
|
+
|
439
|
+
<?php
|
440
|
+
|
441
|
+
$obj = get_field_object('news_cat');
|
442
|
+
|
443
|
+
$news_cat = $obj['value'];
|
444
|
+
|
445
|
+
foreach ($news_cat as $news_cat_name) {
|
446
|
+
|
447
|
+
echo '<li>', $news_cat_name, '</li>';
|
448
|
+
|
449
|
+
}
|
450
|
+
|
451
|
+
?>
|
452
|
+
|
453
|
+
</ul>
|
454
|
+
|
455
|
+
</div>
|
456
|
+
|
457
|
+
</a>
|
458
|
+
|
459
|
+
<?php endforeach;
|
460
|
+
|
461
|
+
endif; ?>
|
462
|
+
|
463
|
+
<?php wp_reset_postdata(); ?>
|
464
|
+
|
465
|
+
<?php
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
$output = ob_get_clean();
|
470
|
+
|
471
|
+
return $output;
|
472
|
+
|
473
|
+
}
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
add_shortcode('get_tag_query', 'get_tag_query_func');
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
?>
|
482
|
+
|
483
|
+
```
|
484
|
+
|
293
485
|
|
294
486
|
|
295
487
|
phpの初学者でして、
|