2016-05-26 4 views
0

Ich habe eine Seite Themeneinstellungen mit einem Wysiwyg-Editor. Ich möchte Shortcodes mit Attributen verwenden.Shortcodes Attribute funktioniert nicht von Seite/Post-Editor

Dies ist einer der Shortcodes mit Attributen, wie beispielsweise zu verwenden:

function row($atts, $content = null) { 
    extract(shortcode_atts(
    array(
    'paddingtop' => 'PADDINGTOP', 
    ), $atts) 
); 
    return '<div class="row" style="padding-top:'.$paddingtop.';"></div>'; 
} 
add_shortcode('fila', 'row'); 

Hier füge ich den WYSIWYG-Editor zu meinem Thema Einstellungen Seite:

array(
    'name' => '', 
    'id' => 'editor_top_shop', 
    'type' => 'editor', 
    'note' => '', 
), 

Dies ist, wie ich überprüfen und drucken Sie die Inhalte im Editor:

<?php if (get_option('editor_top_shop') == true) { 

    $top_shop = get_option('editor_top_shop'); 
    echo stripslashes(apply_filters("the_content", $top_shop)); 

<?php } ?> 

Shortcode im Editor:

[fila paddingtop="40px"] 

Und schließlich, das ist die HTML-Ausgabe:

<div class="row" style="padding-top:PADDINGTOP;"></div> 

ich ein Feedback zu schätzen wissen würde, ich bin immer verrückt diese über :(

Vielen Dank! Frede

+0

Was ist in $ Atts und $ Inhaltsvariablen? –

Antwort

0

schließlich fand ich eine Lösung :)

Wie Sie sagten, @ Poiz, fast alle Code war in Ordnung, aber ich habe eine kleine Änderung zu der Zeit, um zu drucken. Hier die Lösung:

$top_shop = get_option('ace_top_shop'); 
$top_shop = stripslashes($top_shop); 
echo (apply_filters("the_content", $top_shop)); 

Ich muss Stripleashes getrennt, anstatt alle gleichzeitig zu machen. Ich weiß nicht warum ... aber es funktioniert! :)

0

Ihr Code ist sauber ... und ich sehe auch nicht, warum dies das Ergebnis sein sollte, außer wenn Sie einen Tippfehler im Namen des Short-Code-Attributs haben. Versuchen Sie in der Zwischenzeit, das paddingtop-Attribut auf einen Standardwert von 40 px anstelle von "PADDINGTOP" festzulegen. Und dann experimentieren Sie mit dem Ändern der Werte der Attribute.

<?php 
     function row($atts, $content = null) { 
      extract(shortcode_atts(
        array(
         'paddingtop' => '40px', /*<== DOESN'T MATTER BUT TRY DEFAULTING THIS TO 40px */ 
        ), $atts) 
      ); 
      return '<div class="row" style="padding-top:'. $paddingtop .';"></div>'; 
     } 
     add_shortcode('fila', 'row'); 

Ein weiterer Ansatz könnte den Extrakt Drop-Funktion sein (da Sie nur ein Attribut zu behandeln) und selbst die Extraktion von Hand wie so tun:

 function row($atts, $content = null) { 
      $paddingTop = isset($atts['paddingtop']) ? $atts['paddingtop'] : "40px"; 
      return '<div class="row" style="padding-top:'. $paddingTop .';"></div>'; 
     } 
     add_shortcode('fila', 'row'); 
+0

Danke Poiz, es gibt keinen Tippfehler, ich habe einen Doppel-Check gemacht. Wenn ich einen Standardwert wie 40px einstelle, wird es funktionieren, aber es muss in der Lage sein, es zu ändern. BTW, Drop-Extrakt-Funktionen würden nicht funktionieren. Ich habe viele Shortcodes mit mehreren Attributen und alle haben das gleiche Problem. –

+0

@FredericGarcia Genau das ist das Ziel: den Wert innerhalb des Short-Codes mit Ihren Attributen ändern zu können. Hast du die 2. Alternative ausprobiert? Sie können dann die obere Polsterung auf 80px ändern, um zu sehen, ob sie sich in Ihrem Ergebnis widerspiegelt. – Poiz

+0

Sorry Poiz ich missverstanden. Ich habe das gerade getan, und jetzt bekomme ich den Standardwert anstelle des Wertes im Texteditor. –

Verwandte Themen