Я хочу создать форму, которую я могу использовать шорткод для вставки на мой сайт.
Было бы очень хорошо, если бы я мог создать HTML-часть в отдельном файле, а затем вставить ее с помощью короткого кода PHP (чтобы отделить логику страницы от механизма превращения ее в шорткод).
Как я мог это сделать?
-- Обновить --
Вот что я сделал: у меня есть два файла. Один называется «profiletemplate.php», а другой - «scodes». Они оба являются частью плагина, который я создаю для своего сайта с помощью init.php, который их инициализирует. Вот их содержание:
init.php
<?php
require_once(dirname(__FILE__).'/pages/scodes.php');
?>
scodes.php
function jf_testcode() {
include dirname(__FILE__) . 'profiletemplate.php';
}
add_shortcode('testfield', 'jf_testcode');
profiletemplate.php
<?php // Template for my form shortcode ?>
<form>
Testing
</form>
Затем я использую шорткод [testfield] на странице моего сайта.
Обновление 2
Таким образом, этот метод работает, но он не вставляет HTML-код, где вызывается шорткод. Вместо этого он просто вставляет содержимое вверху страницы (как если бы я сказал «эхо-тестирование» вместо «вернуть тестирование» в функцию).
functions.php
которая требует / включает этот определенный файл, иadd_shortcode()
установить желаемый шорткод для вызова вашей функции.Ответы:
Что-то, что я забыл в своем предыдущем комментарии, было то, что шорткоды возвращают контент, и предлагаемый,
include
и мой альтернативный вариантget_template_part
будут напрямую выводить контент (то, что вы видите с контентом, появляющимся вверху вашей страницы, а не там, где вызывается шорткод). Чтобы противодействовать этому, мы должны использовать буферизацию вывода .Определите шорткод в вашем functions.php (или вашего сайта функции сайта специфичного файла).
Затем в папке вашей темы вам понадобится файл с именем,
my_form_template.php
который будет загружен везде, где вы поместите шорткод.источник
Добавьте следующее в ваши functions.php :
Файл my_form_template.php :
источник
get_template_part()
внутри функции шорткода.