Функция PHP echo включает файл

В настоящее время я разрабатываю плагин для 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';
}

Моя проблема в том, что шорткод будет отображаться вверху страницы. Итак, я погуглил этот выпуск и нашел решение. Как там написано, проблема в том, что вместо echo нужно использовать return.

Итак, мой вопрос: как я могу вернуть содержимое рендеринга из включенного файла? (не эхо).


person Markus    schedule 30.04.2019    source источник
comment
Возможный дубликат Сохранение эхо-строк в переменной в PHP   -  person MonkeyZeus    schedule 30.04.2019


Ответы (2)


Попробуйте использовать выходной буфер. 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;
}
person bassxzero    schedule 30.04.2019

Вы должны использовать функцию 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, и он должен работать.

person Sayan D.    schedule 30.04.2019