2017-09-06 1 views
0

Ich habe an meinem ersten WordPress-Plugin gearbeitet, und es funktioniert, zum größten Teil. Wenn ich jedoch das Plugin aktiviere, wird der Bildschirm zum Bearbeiten der Seite komplett durcheinander gebracht. Ich habe einen Screenshot angehängt.HTML von benutzerdefinierten Plugin-Shortcode auf Bildschirm Bearbeiten in WordPress

enter image description here

Jetzt denke ich, ich verstehe, warum, aber ich bin nicht sicher, wie es zu beheben. Ich habe das Plugin als Preisangebot eingerichtet, und wenn der Benutzer den Shortcode im Texteditor platziert, wird er auf dieser Seite angezeigt. Alles, was mit dem Shortcode verbunden ist, wird jedoch auch auf dem Bildschirm "Seite bearbeiten" angezeigt, wie auf dem Foto, das ich oben geteilt habe.

Hier ist ein Codeausschnitt, der das Problem zeigt. Ich verdichte das natürlich, aber das gibt mir das gleiche Ergebnis. Die "Hello World" und der Lorem Ipsum erscheinen immer noch auf dem Bildschirm der Bearbeitungsseite wie auf dem Screenshot.

<?php  
function price_quote_display() { 
    ?> 
    <h1>Hello World</h1> 
     <p> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus laoreet sit amet felis nec molestie. Ut porttitor neque nec metus feugiat tincidunt. 
     </p> 
    <?php 
} 

//function calls html from shortcode 
function register_shortcode(){ 
    add_shortcode('price-quote','price_quote_display'); 
} 

//sets up and calls function that contains shortcode 
add_action('init', 'register_shortcode'); 

?> 

Jede Idee, warum das HTML innerhalb des priceQuoteDisplay zeigt auf der Bearbeitungsseite Bildschirm? Danke für jede Hilfe.

+0

Sie Ihre Frage aktualisieren können alle relevanten Code enthalten in einer [Minimal, vollständig und prüfbare Beispiel] (https://stackoverflow.com/help/ mcve)? Dies wird uns helfen, das Problem leichter zu erkennen. – FluffyKitten

+0

Danke für den Vorschlag. Ich habe die Frage so bearbeitet, dass sie ein wenig einfacher ist, aber das Problem immer noch weitergibt. – Coltvant

+0

Das macht es klarer zu sehen, was passiert :). Ich bemerke: Sie rufen 'add_shortcode' über' add_action' auf init auf, was zu früh sein könnte. In jedem Plugin-Shortcode, den ich geschrieben habe, habe ich gerade den 'add_shortcode' direkt nach der Deklaration der Funktion eingefügt (d. H. Nicht in irgendwas einhaken), da das Plugin nur dann geladen wird, wenn WP dafür bereit ist. Eine andere Sache, die Sie versuchen sollten, ist, den Inhalt von Ihrer 'priceQuoteDisplay'-Funktion zurückzugeben, anstatt sie direkt anzuzeigen (obwohl ich dachte, Sie sollten es auf Ihre Weise tun können). – FluffyKitten

Antwort

0

Also habe ich eine Antwort gefunden. Ich kann nicht erklären, warum das funktioniert, aber diese Lösung hat für mich funktioniert. Durch die Verwendung von ob_start() und ob_get_clean() beseitigte ich mein Problem. Dies ist, wie es aussieht, wenn ich es aktualisiert:

<?php  
function price_quote_display() { 
    ?> 
    <h1>Hello World</h1> 
     <p> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus laoreet sit amet felis nec molestie. Ut porttitor neque nec metus feugiat tincidunt. 
     </p> 
    <?php 
} 

function form_shortcode() { 
    ob_start(); 
    send_mail(); 
    price_quote_display(); 

    return ob_get_clean(); 
} 

    //creates shortcode 
    add_shortcode('price-quote','form_shortcode'); 

?> 
Verwandte Themen