Shortcode mit mehreren Parametern?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • zb folgender Ansatz wäre für deine Idee (ungetestet!)

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Zitat

    Warnung

    Verwenden Sie extract() nicht für nicht vertrauenswürdige Daten wie Benutzereingaben...

    Warnung

    ...und das Aufrufen von extract() auf nicht vertrauenswürdigen Daten wie $_FILES ist, wie oben beschrieben, ein potenzielles Sicherheitsrisiko.

    http://de1.php.net/extract

    Habe ähnliches bisher so geschrieben:


    Je nachdem was Du vorhast, musst Du eventuell auch alle Links in einem Array aufnehmen und dann mit in_array() vergleichen oder wie auch immer, nicht das es möglich ist Links oder Parameter zu übergeben, die dann andere Scripts einschleusen.

    Einmal editiert, zuletzt von Melewo (30. Dezember 2013 um 20:47)

  • Hallo,

    danke!

    So klappt das schonmal:

    [tocxyz link1="test-beitrag.html/2" link1_name="Einleitung" link2="test-beitrag.html/3" link2_name="Hauptteil"]


    Jetzt möchte ich das nur noch mit einer Schleife versehen, damit die Linkanzahl unterschiedlich sein kann.
    Da weiß ich jetzt leider nicht weiter. :)

  • Was aber auch möglich wäre...

    Mehrere Shortcodes hintereinander:
    [tocxyz link="test-beitrag.html/2" link_name="Einleitung"]
    [tocxyz link="test-beitrag.html/3" link_name="Haupteil"]

    Als Ergebnis dann:
    <li>Link</li>
    <li>Link</li>

    Nur wie bekomme ich jetzt noch <ul> davor und </ul> danach, damit ich ne korrekte Liste habe?

  • Jetzt möchte ich das nur noch mit einer Schleife versehen, damit die Linkanzahl unterschiedlich sein kann.
    Da weiß ich jetzt leider nicht weiter.


    Ich sehe noch keinen Ansatz zur Sicherheit. Bei 3 Links benötigst Du noch keine Schleife und wenn es mehr werden sollten, musst Du eh überprüfen, ob die richtigen Links übergeben wurden.

    Nur wie bekomme ich jetzt noch <ul> davor und </ul> danach, damit ich ne korrekte Liste habe?


    Wenn Du aber nicht einmal weißt, wie Du zum Beispiel

    PHP
    return "<ul>\n".$gebeaus."</ul>\n";


    schreibst, um eine Liste zu erstellen, ist es eventuell eine Überlegung wert, ob Du nicht eine Nummer kleiner beginnst und dann schrittweise lernst.

    Ansonsten noch einmal ein Beispiel, was jetzt nur wirklich als Beispiel zu verstehen sein soll, ohne das ich es so einsetzen würde.

  • Ein Beispiel mit Schleife:

  • Wozu überhaupt einen Shortcode verwenden, wenn der nur die Links 1:1 in eine Liste umwandeln soll. Wäre es da nicht einfacher, die Linkliste direkt einzugeben? Jeder Shortcode benötigt Zeit und Rechenleistung und bei vielen Links ist der Shortcode zudem aus meiner Sicht unübersichtlicher, als eine einfache HTML-Liste.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ja, nach hin und her überlegen hab ich mir die Gadanken nun auch gemacht.
    Es sind nicht jetzt nicht viele Listen und die können eigentlich auch direkt rein.
    Hab mir halt gedacht, dass ich so die HTML Auszeichnung direkt bei allen Listen ändern kann, falls es mal was neues gibt, für die Listenauszeichnung.

    Eine Frage zur Sicherheit hätte ich aber noch... Warum sollte man die Übergabe überprüfen? Die Links würde ich und vielleicht noch ein Autor rintragen. Oder ist das zur Sicherheit von außen? Da weiß ja niemand, dass es so einen Shortcode gibt, ebenso wie und was übergeben wird.

  • Eine Frage zur Sicherheit hätte ich aber noch... Warum sollte man die Übergabe überprüfen?


    Eigentlich jede Übergabe und jede Ausgabe. Du gibst etwas mit PHP aus und mindestens dann, wenn es sich bei der Ausgabe um von Benutzern übergebene oder eingegebene Daten handelt, ist das mindeste die Verwendung von htmlspecialchars() oder htmlentities(). WP bringt dafür eigene Funktionen mit, wie esc_html, die Du stattdessen benutzen könntest. Im Gegensatz dazu wandelt preg_replace in Verbindung mit einer angepassten Zeichenklasse nichts um und lässt nichts durch, was an Zeichen nicht erlaubt wurde.

    Somit könntest Du das so schreiben:

    PHP
    "<li><a href=\"".esc_html($value)."\">".esc_html($value)."</a></li>\n";

    Oder halt auch so:

    PHP
    "<li><a href=\"".pruefe_Links($value)."\">".esc_html($value)."</a></li>\n";

    Es hängt vom Einzelfall ab. Hatte da auch mal vor längerer Zeit in einem Forum eine Frage gestellt und eine Antwort von "Mork vom Ork" erhalten, die zumindest lesenswert ist:

    http://www.abakus-internet-marketing.de/foren/viewtopic/t-68531.html

    Einmal editiert, zuletzt von Melewo (1. Januar 2014 um 13:53)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!