2017-03-03 1 views
0

Meine Shortcode-Ausgabe erscheint immer auf der Oberseite meiner benutzerdefinierten Vorlage.Shortcode-Ausgabe zeigt immer oben auf der benutzerdefinierten Vorlage

eigenes Template

$tag= 'the_content'; 
remove_all_filters($tag); 
$postid = get_the_ID(); 
$post = get_post($postid); 
$content = do_shortcode($post->post_content); 

ob_start(); 
echo $content; 
$result = ob_get_contents(); 
ob_end_clean(); 
return $result; 

individuelle Short

function signupform_shortcode($atts) { 
    extract(shortcode_atts(array(
     'socialmkt' => 'aweber' 
    ), $atts)); 

    if($socialmkt == 'aweber'){ 
     if($display == 'popup') { 
     return include_once('modal-aweber.php'); 
     } 

    } 
} 
add_shortcode('signupform', 'signupform_shortcode'); 

Die Short es Platz in der Mitte eines HTML-Landung ist. Ich versuche ob_start(), dass ich in anderen Posts lesen, aber immer noch nicht funktioniert.

+0

'modal-aweber.php' es ist die aktuelle html, die ich an einem bestimmten Ort in der HTML drucken muss. –

Antwort

2

Ihr Shortcode-Callback wird Inhalte ausgeben, anstatt sie zurückzugeben, weshalb Sie sehen, dass sie oben auf Ihrer Seite erscheinen.

Die Verwendung der Ausgabepufferung (ob_start()/ob_get_contents()) ist eine gültige Methode, das Problem zu lösen, jedoch müssen Sie den Code verschieben.

Die Ausgabepufferung sollte innerhalb Ihres Kurzwahl-Callbacks stattfinden, wo der Rückgabewert anstelle der Ausgabe benötigt wird.

function signupform_shortcode($atts) { 
    extract(shortcode_atts(array(
     'socialmkt' => 'aweber' 
    ), $atts)); 

    // Begin output buffering here. Any output below will be stored in a buffer. 
    ob_start(); 

    if ($socialmkt == 'aweber') { 
     if ($display == 'popup') { 

      // Return, as previously used, doesn't help in this context. 
      include_once('modal-aweber.php'); 
     } 

    } 

    // Return (and delete unlike ob_get_contents()) the content of the buffer. 
    return ob_get_clean(); 
} 
add_shortcode('signupform', 'signupform_shortcode'); 
+0

Danke für die Antwort! Ich habe versucht, was du sagst und nichts. Ich habe (ob_start()/ob_get_contents()) aus meiner benutzerdefinierten Vorlage entfernt und dem benutzerdefinierten Shortcode hinzugefügt. Neben dieser Lösung probierte ich (ob_start()/ob_get_contents()) in beiden Dateien. –

+0

funktioniert perfekt! Es war ein Problem mit dem Cache. –

Verwandte Themen