web-dev-qa-db-fra.com

Shortcode affichage en dehors de la div

J'ai créé un shortcode qui retrive et affiche un formulaire. Le contenu de l'attribut en 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' );

Maintenant, utilisez ce shortcode dans Post/page.

Comme ça

 <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> 

Tout le monde court ce problème.

1
Pavnish Yadav

Utilisez ceci à la place:

Concaténer le code HTML puis le renvoyer.

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

Si vous me plaisez, venez à cette réponse car vous obtenez cette erreur lorsque vous utiliseztemplate partsdans votreshortcode, alors j'aime davantage la réponse de WordPress Core Developer Konstantin Kovshenin pour mettre en tampon la sortie:

Dans votre fonction de shortcode:

// 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