• Hallo zusammen,

    ich stehe gerade etwas auf dem Schlauch und mir fällt keine Lösung ein.

    Ich habe einen normalen Shortcode erstellt mit:

    function productbox_func($atts) {
    	extract(shortcode_atts(array(
          'bild' => '',
          'title' => '',
          'text' => '',
          'uvp' => '',
          'preis' => '',
          'versand' => 'Kostenfreier Versand deutschlandweit!'
       ), $atts));
    	return '

    Nun möchte ich im Editor natürlich auch mal gerne einen Link in dem Description-Feld einfügen. Mache ich dies, wird es nicht mehr im Frontend dargestellt, da die Anführungszeichen des href etc. natürlich den Code zerhauen. Wie kann ich das beheben – ich komme einfach nicht drauf?

    <p class="productFeatures"><span itemprop="description">'.$text.'</span></p>

    Vielen Dank und ein schönes Wochenende.

    Florian

Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)
  • Der Code ist unvollständig. Versuche doch nochmal den kompletten Code zu posten. Vielleicht hilft dir auch schon die Codex-Seite:
    http://codex.wordpress.org/Shortcode_API

    Gruß, Torsten

    Thread-Starter Florian

    (@pictibe)

    Hier der ganze Code 🙂

    // Produktbox shortcode
    function productbox_func($atts) {
    	extract(shortcode_atts(array(
          'bild' => '',
          'title' => '',
          'text' => '',
          'uvp' => '',
          'preis' => '',
          'versand' => 'Kostenfreier Versand deutschlandweit!'
       ), $atts));
    	return '
    		<div class="span8 angebot">
    			<a rel="lightbox" target="_blank" title="'.$title.' kaufen günstig im Angebot" href="'.$bild.'">
    				<img src="'.$bild.'" alt="'.$title.'" class="span3" style="padding-right:10px;" />
    			</a>
    			<div class="span5 col cf" itemscope itemtype="http://schema.org/Product">
    				<h4 itemprop="name">'.$title.'</h4>
    				<p class="productFeatures"><span itemprop="description">'.$text.'</span></p>
    				<p class="preis" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
    					<span class="uvp">UVP: <del>'.$uvp.' €</del></span>
    					<br />
    					<strong>Angebotspreis: <span itemprop="price">'.$preis.'</span> €</strong>
    					<br />
    					<i style="font-size:0.7em;margin-top:8px;">'.$versand.'<br />Alle Preise inkl. 19% gesetzlicher MwSt.</i>
    					<link itemprop="availability" href="http://schema.org/InStock" />
    				</p>
    				<p><strong>Rufen Sie jetzt unter XXX an oder <a href="XXX">schreiben</a> Sie uns.</strong></p>
    			</div>
    		</div>
    	';
    }
    add_shortcode('productbox', 'productbox_func');

    Escapen ist wahrscheinlich nicht das was du möchtest, könnte aber ggf. an manchen Stellen doch sinnvoll sein:
    http://codex.wordpress.org/Data_Validation

    Inwiefern geht der Code denn genau kaputt. Kannst Du den kaputten Ausgabe-Code auch mal posten?

    Gruß, Torsten

    Thread-Starter Florian

    (@pictibe)

    Hallo Torsten,

    Problem ist, dass dann die Description garnicht mehr angezeigt wird, da natürlich der gesamte p-tag mit string nicht mehr richtig ist, da doppelte oder mehrfache Anführung vorhanden ist. Der p-tag ist dann also leer.

    Ich frage mich wieso das nicht automatisch kompiliert wird!?!

    Ist ein Link innerhalb eines Shortcode-Variablen-Wertes so unnormal?

    Viele Grüße aus Köln und einen schönen Sonntag
    Florian

    Ich frage mich wieso das nicht automatisch kompiliert wird!?!

    Weil das schon eine sehr spezielle Sache ist. Normalerweise werden Attribute für so etwas wie eine ID, Breite/Höhe oder einen zusätzlichen Klassennamen genutzt und nicht für Inhalte, die HTML enthalten.

    Der Trick ist vorher encoden und nachher decoden.
    Steht auch auf der Codex-Seite:
    http://codex.wordpress.org/Shortcode_API#HTML

    Gruß, Torsten

    Thread-Starter Florian

    (@pictibe)

    Okey verstehe, aber wie kann ich nun konkret für die description variable den inhalt richtig kompilieren lassen?

Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)
  • Das Thema „Anführungszeichen in Shortcode functions.php“ ist für neue Antworten geschlossen.