前提・実現したいこと
Wordpressでホームページを制作しています。
プラグインを極力使用したくないため、ショートコードを自作しその中でプログラムを動かして固定ページへ表示させたいと思っています。
標題にすべて書いてしまいましたがやりたいこととしましては、
1.カスタム投稿タイプ+カスタムフィールド(advanced custom fields)で入力
2.1.の内容を別のPHPファイルとして作成し、ショートコードとして設定
3.2.を固定ページに入れて表示(2.はどこででも使用できるようにしたい)
分かりにくい内容で申し訳ありませんが、ご教示の程よろしくお願いいたします。
** (2018/10/17 14:00 ソースコードを修正しました) **
該当のソースコード
php
1//function.php 2function my_php_Include($params = array()) { 3 extract(shortcode_atts(array('file' => 'default'), $params)); 4 ob_start(); 5 include(STYLESHEETPATH . "/$file.php"); 6 return ob_get_clean(); 7} 8add_shortcode('hoge', 'my_php_Include');
php
1//hoge.php 2 <?php 3 $hogeargs = array( 4 'posts_per_page' => 4, 5 'offset' => 0, 6 'orderby' => 'post_date', 7 'order' => 'DESC', 8 'post_type' => 'hogehoge', 9 'post_status' => 'publish', 10 'suppress_filters' => true, 11 'ignore_sticky_posts' => true, 12 'no_found_rows' => true 13 ); 14 $hogePosts = get_posts($hogeargs); 15 if($hogePosts): ?> 16 <?php if($hogePosts) : foreach($hogePosts as $post) : setup_postdata( $post ); ?> 17 <?php 18 //データ取得(Advanced custom field) 19 $data_a = get_field('data_a'); 20 $data_b = get_field('data_b'); 21 $data_c = get_field('data_c'); 22 $data_d = get_field('data_d'); 23 $data_e = get_field('data_e'); 24 $data_f = get_field('data_f'); 25 ?> 26 <img src="<?php $data_a; ?>"> 27 <?php the_title(); ?> //タイトルは出ますが「ショートコードを設置した固定ページのタイトル」が出る 28 <p> 29 <?php if($data_b === 'aa'){ 30 echo '◯'; 31 } elseif($data_b === 'bb'){ 32 echo '●'; 33 } ?> 34 /<?php echo $data_c; ?></p> 35 <?php 36 if(!empty($data_d)){ 37 if( in_array( 'cc', $data_d ) ) { 38 echo '□'; 39 } 40 if( in_array( 'dd', $data_d ) ) { 41 echo '■'; 42 } 43 } ?> 44 <p><?php echo $data_e; ?></p> 45 <p><?php echo $data_f; ?></p> 46 <?php endforeach; ?> 47 <?php endif; ?> 48 <?php endif; ?>
html
1[hoge file='hoge']
試したこと
・ショートコードの中身(ただのテキスト)を表示させるところまではできました。
ただ、肝心の入力した値を取得したり表示がうまくいきません。
補足情報(FW/ツールのバージョンなど)
・Wordpress 4.9.8
・Advanced Custom Fields PRO
・Custom Post Type UI
回答1件
あなたの回答
tips
プレビュー