Отображение шорткода за пределами

Я создал шорткод, который отображает форму.

function check_my_login( $atts)
    {

        return '<form action="" name="" method="post" enctype="multipart/form-data">
               <div class="form-group">
                    <label for="description">Project Description</label>
                    <textarea name="p_description" placeholder="Project Description" class="form-control"><?php if (isset($_POST['p_description']) && $_POST['p_description'] != '') echo $_POST['p_description'] ?></textarea>
                </div>

                <div class="form-group">
                    <label>Project Attachment</label>
                    <input type="file" name="p_attachment">
                </div>
</form>';
    }
    add_shortcode( 'kentaUser', 'check_my_login' );

Теперь использую этот шорткод внутри поста / страницы.

Например:

 <div class='manage_page'>[kentaUser]</div>
Но мой шорткод выводится за пределами верхней части div в постах / страницах.
 <div class='manage_page'></div> 
Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 2
  1. michaK

    Попробуйте буферизировать вывод:

    В своей функции создания шорткода:

    // начало буферизации
    
    // вызов шаблона (с html-выводом)
    get_template_part( '/path/to/template/file' );
    
    // вывод содержимного буфера
    return ob_get_clean();
    
  2. David Labbe

    Попробуйте это:

    Объедините HTML, а затем верните его.

    function check_my_login( $atts)
    {
    
        $html = '<form action="" name="" method="post" enctype="multipart/form-data">';
        $html .= '<div class="form-group">';
        $html .= '<label for="description">Project Description</label>';
        $html .= '<textarea name="p_description" placeholder="Project Description" class="form-control">';
    
        if(isset($_POST['p_description']) && $_POST['p_description'] != ''){
            $html .= $_POST['p_description'];
        }
    
        $html .= '</textarea>';
        $html .= '</div>';
        $html .= '<div class="form-group">';
        $html .= '<label>Project Attachment</label>';
        $html .= '<input type="file" name="p_attachment">';
        $html .= '</div>';
        $html .= '</form>';
    
        return $html;
    }
    
     add_shortcode( 'kentaUser', 'check_my_login' );
    
Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: