it-swarm.com.de

Shortcode-Anzeige außerhalb des Div

Ich habe einen Shortcode erstellt, der ein Formular abruft und anzeigt. Der Inhalt des Attributs in 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' );

Verwenden Sie nun diesen Shortcode innerhalb des Beitrags/der Seite.

So was

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

Irgendjemand hat dieses Problem kurzgeschlossen.

1
Pavnish Yadav

Verwenden Sie dies stattdessen:

Verketten Sie den HTML-Code und geben Sie ihn zurück.

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

Wenn Sie mich mögen, kommen Sie zu dieser Antwort, weil Sie diese Fehlermeldung erhalten, wenn Sie Template-Teile in Ihrem Shortcode verwenden, dann gefällt mir eher die Antwort von WordPress Core Developer Konstantin Kovshenin Ausgabe puffern:

In Ihrer Shortcode-Funktion:

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