web-dev-qa-db-ja.com

Divの外側のショートコード表示

フォームを取得して表示するショートコードを作成しました。HTMLの属性の内容。

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' );

今すぐPost /ページ内でこのショートコードを使用してください。

このような

 <div class='manage_page'>[kentaUser]</div>
 But my shortcode content display out side the div.Display upper side in post/page content.
 <div class='manage_page'></div> 

誰もがこの問題を解決します。

1
Pavnish Yadav

代わりにこれを使ってください。

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' );
3
David Labbe

あなたのショートコードテンプレートパーツを使用したときにこのエラーが発生したためにこの回答にたどり着くなら、私はもっと好きです。 WordPress Core Developerからの回答 Konstantin Kovshenin が出力をバッファリングします。

あなたのショートコード機能では:

// start buffer
ob_start();

// call template (with html output)
get_template_part( '/path/to/template/file' );

// return buffered output
return ob_get_clean();
0
mfgmicha