Я использую конструктор страниц, который не позволяет мне вставлять код PHP (только HTML). Но он примет шорткоды.
Поскольку я хочу включить целую область пользовательских типов записей, я пытаюсь добавить цикл пользовательских типов записей в отдельный файл и использовать шорткод для отображения кода внутри этого файла. Файл, который я хочу включить, называется team.php и находится в каталоге /inc/team.php.
Я нашел этот фрагмент кода в другом посте, чтобы добавить его в мой файл функций, и я добавил свое имя файла и скорректировал каталог файлов в соответствии с закомментированными инструкциями.
add_shortcode('include', 'include_php_file');
function include_php_file($atts=array(), $content='') {
$atts = shortcode_atts(array(
'file' => ''
), $atts);
if(!$atts['file']) return 'team.php'; // needs a file name!
$file_path = dirname(__FILE__).'/inc/'.$atts['file']; // adjust your path here
if(!file_exists($file_path)) return '';
ob_start();
include($file_path);
$html = ob_get_contents();
ob_end_clean();
return $html;
}
Создание шорткода: [include file='team.php']
(Я думаю!)…
Я надеялся, что это будет решением, но похоже, что он не выводит код внутри моего файла team.php.
Я уверен, что упускаю что-то простое здесь, но я не могу понять, где я иду не так. Любая помощь будет принята с благодарностью!
Хорошо, я нашел ответ следующим кодом:
function get_team($atts) {
ob_start();
get_template_part('/inc/team');
return ob_get_clean();
}
add_shortcode('display-team', 'get_team');
Пока у меня неплохо работает, разве у кого-нибудь есть лучшее решение?
Других решений пока нет …