В настоящее время я разрабатываю плагин для wordpress. Я создал шорткод, который отображает содержимое другого файла html/php, это выглядит так:
function df_display_form()
{
// Fetching some data with $wpdb
// Display the data
include_once plugin_dir_path(__FILE__) . 'markup/show-dynamic-form.php';
}
Моя проблема в том, что шорткод будет отображаться вверху страницы. Итак, я погуглил этот выпуск и нашел решение. Как там написано, проблема в том, что вместо return нужно использовать echo.
Итак, мой вопрос: как я могу вернуть содержимое рендеринга из включенного файла? (не эхо).






Попробуйте использовать выходной буфер. https://www.php.net/manual/en/function.ob-get-clean.php
function df_display_form()
{
ob_start();
// Fetching some data with $wpdb
// Display the data
include_once plugin_dir_path(__FILE__) . 'markup/show-dynamic-form.php';
$out = ob_get_clean();
return $out;
}
Вы должны использовать функцию php для отображения формы с помощью шорткода.
Я думаю, что в настоящее время у вас есть этот тип кода в файле show-dynamic-form.php.
<?php
// Some codes
?>
<form>
Form elements
</form>
Он просто отобразит ваш код в верхней части вашего сообщения или страницы. Правильный способ:
<?php
// Some codes
$variable = '<form>';
$variable .= 'form elements';
$variable .= '</form>';
return $variable;
?>
Попробуйте использовать этот способ в вашем файле dynamic-form.php, и он должен работать.
Возможный дубликат Хранение эхо-строк в переменной в PHP