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