<?php //(shortcodes.php)

/* PHPファイル include ショートコード
* 
で、phpファイルを呼び出し ====================================== */ function shortcode_part_file($params = array()) { $params = shortcode_atts(array( 'file' => '', 'id' => '', 'class' => '' ), $params, 'part'); $file = $params['file']; //
形式への対応 // WordPressは
を $params[0] => '="value"' として渡す if (empty($file) && !empty($params[0])) { $file = trim($params[0], '="\''); } if (empty($file)) return ''; ob_start(); echo '<div' . (!empty($params['id']) ? ' id="' . esc_attr($params['id']) . '"' : '') . (!empty($params['class']) ? ' class="' . esc_attr($params['class']) . '"' : '') . '>'; // .php が含まれていなければ付与(どちらの書き方でも動くように) $filename = pathinfo($file, PATHINFO_EXTENSION) === 'php' ? $file : $file . '.php'; // ディレクトリトラバーサル対策 $filename = str_replace('..', '', $filename); $file_path = get_stylesheet_directory() . '/' . $filename; if (file_exists($file_path)) { include($file_path); } else { if (defined('WP_DEBUG') && WP_DEBUG) { echo '<!-- ファイルが見つかりません: ' . esc_html($filename) . ' -->'; } } echo '</div>'; return ob_get_clean(); } add_shortcode('part', 'shortcode_part_file');