Support » Allgemeine Fragen » Wie bindet man Shortcodes in WordPress ein?

  • Hallo,
    zu folgender Erläuterung habe ich einige Fragen.

    Als Erstes erstellt man im Verzeichnis des aktiven Themes eine Datei „shortcodes.php„. In diese Datei trägt man die jeweiligen PHP-Codes ein. Als zweiten Schritt editiert man die Datei „functions.php“ und fügt folgenden Eintrag hinzu:

    // Shortcodes einbinden
    include_once (TEMPLATEPATH . ‚/shortcodes.php‘);

    Was ist das aktuelle theme? Wenn ich WordPress starte sehe ich das Dashboard mit dem linken Menu
    Startseite,… Beiträge,…Seiten,… Plugins,….
    Was ist unter dem Verzeichnis des aktuellen Themes zu verstehen ? (Name des Verzeichnisses?
    Wie finde ich die Datei „functions.php“

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 18)
  • Hallo.

    Was ist das aktuelle theme?
    -> Dieses findest du unter dem Punkt „Design“.

    Was ist unter dem Verzeichnis des aktuellen Themes zu verstehen ? (Name des Verzeichnisses?
    –> Damit ist der Ordner auf deinem Server gemeint. Meistens gelangst du per FTP-Programm und einer SFTP Verbindung zu diesen Dateien.

    Wie finde ich die Datei „functions.php“
    –> Siehe vorherige Antwort.

    Hinweis:
    – Dafür solltest du ein Child-Theme anlegen, da bei einem themupdate die Änderungen verloren gehen.

    – TEMPLATEPATH ist deprectated – siehe: https://core.trac.wordpress.org/ticket/18298

    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von Marcus Spanier.

    vom Root-Verzeichnis der Domain aus gesehen findest Dein Theme hier:

    wp-content/themes/twentyfifteen

    Statt twentyfifteen kann da auch ein anderer Name stehen, je nachdem was Du für ein Theme verwendest.

    Ich verwende um die functions.php nicht bearbeiten zu müssen das Snippets Plugin.

    https://de.wordpress.org/plugins/code-snippets/

    Um dann eine eine Funktion mittels Shortcode einzubauen erstelle ich ein Snippet:

    add_shortcode( 'shortcode', 'funktion' );
    function funktion() {
        // hier funktion definieren
    }

    In ein Snippet kannst du auch mehrere solcher Aufrufe integrieren.

    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von radarin.

    Ich möchte an dieser Stelle einmal ausdrücklich davor warnen, so ein Plugin einzusetzen, dass ausführbaren PHP in eine Datenbank schreibt und speichert und auch noch ausführbar macht.

    Sollte ein Angreifer (kann auch ein Nutzer innerhalb des WP sein) eine SQL Injection ausführen, so hat er Zugriff auf die Datenbank und kann so PHP-Schadcode in die Datenbank schreiben, der dann lediglich vom Plugin ausgeführt wird.

    Es hat immerhin seinen Grund warum man seine WP – Files mit gutgesetzten Dateirechten versieht, damit eben der PHP Code nicht geändert werden kann. Durch so ein Plugin wird diese Sicherheitsmaßnahme einfach umgangen.

    Daher rate ich von solchen Plugins allgemein ab.

    Thread-Starter jonn10

    (@jonn10)

    Hallo espiat,
    ich muss gestehen, dass ich mit deinem Hinweis nicht klarkomme.
    Mir wurde wordpress als einfach für den Endanwender beschrieben. Wenn man aber php verwenden möchte, wird es kompliziert und offensichtlich auch angreifbar.
    Und man muss sich Begriffe aneignen wie Child-Theme, themeupdate bei dem Änderungen verloren gehen, TEMPLATEPATH, ….
    Gibt es denn eine deutsche allgemeinverständliche Anleitung für die von Dir genannten Schritte?

    Was möchtest du mit dem Shortcode den machen?

    Vielleicht benötigst du eine andere Lösung.

    Gibt es denn eine deutsche allgemeinverständliche Anleitung für die von Dir genannten Schritte?

    Nun ja. Um eigene Funktionen einzubauen benötigst du eben CSS, PHP und (javascript) Kenntnisse. Daher gibt es auch viele Plugins um den Usern dies abzunehmen. Vergleiche es mit einem Auto. Du kannst es fahren, aber wenn du Modifikationen haben möchtest, dann gibts du dies in Hände eines Fachmanns oder du probierst es selber. Dafür benötigst du Kenntnisse.

    Wo hostest du? Benutzt du wordpress.com?

    „WordPress ist einfach“ – diese pauschale Aussage ist richtig, wenn es darum geht, einen Beitrag oder eine Seite zu schreiben, ein paar Wörter fett oder kursiv zu setzen und auf den Button „veröffentlichen“ zu klicken. Für Anwender mit ein wenig Grundkenntnissen ist es auch noch einfach, verschiedene Plugins und Themes auszuwählen, installieren und aktivieren, wobei ich hier nicht die Programmierung eigener Plugins oder Themes meine.
    Ich weiß nicht, welche Funktionalität du umsetzen möchtest oder woher diese etwas fragwürdige Anleitung stammt, aber sie richtet sich gewiss nicht an Anwender, die ihre ersten Erfahrungen mit WordPress sammeln.

    Shortcodes sind wie Kürzel für Textbausteine, die in den Webseiten ausgegeben werden. Wie du selbst einen Shortcode erstellen kannst, habe ich hier beschrieben. Der Beitrag richtet sich zwar an fortgeschrittene Einsteiger, beinhaltet aber die Programmierung von PHP-Code. Wenn dir Begriffe wie Child Theme oder Template Path aber noch nicht vertraut sind, würde ich eher empfehlen, dass du versuchst, deine Wünsche mit bereits bestehenden Plugins umzusetzen.

    Das Plugin Shortcodes Ultimate bietet dir eine Reihe von Shortcodes, die du in deiner Website benutzen kannst, um z.B. Inhalte anders darzustellen. Hier ist keine Programmierung erforderlich und vielleicht ist ja für dich schon die Funktionalität dabei, die du benötigst?

    Wenn du einen Einstieg in die Programmierung eigener Plugins suchst, empfehle ich gerne das Buch

    WordPress für Entwickler: Crashkurs, David Remer, ISBN-13 978-3734764783

    @espiat
    Deine Warnung kann ich in diesem Zusammenhang nicht nachvollziehen. Shortcodes schreiben keine Inhalte in die Datenbank. Aber selbst wenn ich z.B. eine Option in einem Plugin in die Datenbank schreibe, wird daraus nicht zwangsläufig ein Tor für SQL-Injections. Für einen Einsteiger finde ich diesen Hinweis an dieser Stelle unnötig beunruhigend. Ich stimme dir aber gerne zu, wenn es darum geht, dass durch fehlerhaften Code Sicherheitslücken entstehen können. David beschreibt in seinem o.g. Buch, was hierzu zu beachten ist.

    @pixolin : Ich habe gerade mal das Plugin getestet. Es legt eine Tabelle an mit xxx_snippets und darin werden 1zu1 die snippets in der DB gespeichert. also die reinen PHP Befehle.

    Habe dann

    function your_function() {
      echo phpinfo();
    }
    add_action( 'wp_footer', 'your_function' );
    

    eingefügt.

    Somit habe ich den Frontend php Code mittels dem Plugin aus der DB heraus geändert.

    Dann habe ich noch

    wp_create_user( "neuer", "neuer", "mail@test.de" );

    in die Funktion eingefügt. Das Spiel kann ich dann weitertreiben und mit ADMiNrechten anlegen.

    Damit wäre meine Aussage bewiesen.

    Weiterer Check: Habe den Zugriff des Plugins getestet. Der ist nur auf Admin beschränkt. Gibt es andere Plugins, die das nicht berücksichtigen, so könnte ein Autor sich damit als ADMIN anlegen. Ohne große Probleme. Darauf will ich hinaus.

    Für einen Einsteiger finde ich diesen Hinweis an dieser Stelle unnötig beunruhigend.

    Im Grunde hast du recht. Aber ob Anfänger oder Erfahrener (Das weiss ich ja nicht) muss und will ich einfach auf diesen Umstand hinweisen. Damit möchte ich gewiss niemanden verschrecken, aber es muss (aus meiner Sicht) gesagt werden.

    Auch für @radarin ist dieser Hinweis sicherlich behilflich.

    Gruss

    • Diese Antwort wurde geändert vor 6 Jahren, 1 Monat von Marcus Spanier.

    Achsoooo… Du meinst das Plugin Code Snippets (und nicht Shortcodes). Gut, dass wir darüber gesprochen haben. 🙂

    Deine Bedenken zur Sicherheit des Plugins kann ich noch nicht ganz nachvollziehen, da nur Administratoren neue Snippets anlegen können, aber sicher ist damit genauso mit Umsicht umzugehen wie auch bei eigenen Plugins.

    Thread-Starter jonn10

    (@jonn10)

    @espiat

    Was möchtest du mit dem Shortcode den machen?

    ich möchte bei einem Klick auf einen Namen ein PHP-Script aufrufen (versorgt mit dem Namen).
    Abhängig vom Namen versendet das PHP-Script unterschiedliche mails an die Person bzw. ja nach Person auch an weitere Empfänger.
    Das PHP-Script habe ich seit längerem im Einsatz auf einer Webseite (die nicht mit WordPress ersellt wurde)

    Da ich durch den Threadverlauf glaube, dass du nicht ausreichend Wissen hast, um PHP Scripte einzufügen, denke ich wärst du mit einem Plugin besser beraten:

    https://de.wordpress.org/plugins/search/contact/

    Thread-Starter jonn10

    (@jonn10)

    Ein Kontaktformular ist nicht erwünscht.
    Und ein voll funktionsfähiges PHP-Script ist vorhanden.
    Dies außerhalb von WordPress in ein Verzeichnis zu speichern und in HTML aufzurufen, ist äußerst trivial.
    Daher wundert es mich, dass es in WordPress kompliziert sein soll.

    Ein Kontaktformular ist nicht erwünscht.
    -> Hörte sich genau nach so etwas an. Deine Beschreibung ist an der Stelle auch ungenau.

    Und ein voll funktionsfähiges PHP-Script ist vorhanden.
    Wenn es auf dem Stand der Zeit ist, dann setze es ein. Kommt es aus einer vetrauenswürdigen Quelle(?)


    Dies außerhalb von WordPress in ein Verzeichnis zu speichern und in HTML aufzurufen, ist äußerst trivial.

    Daher wundert es mich, dass es in WordPress kompliziert sein soll.
    Nein es ist auch nicht kompliziert. Mit nur ein wenig Kenntniss kann man das bewerkstelligen. Diese Kenntnisse bringst du offensichtlich nicht mit.

    Nachsatz:
    Deine Ursprungsfragen wurden mehr als beantwortet und dann hast du noch eine Grundsatzfrage gestellt, die nun in eine Grundsatzdiskussion geendet ist. Und nun stellst du wieder eine Grundsatzfrage ohne überhaupt eine konkrete Frage zu stellen. Wir drehen uns hier im Kreis. Ich hoffe, dass siehst du ähnlich.

    Bitte verstehe das Forum als eine Art Unterstützung, für Probleme, die man selbst schon angegangen ist. Eine gewisse Eigeninitiative, bevor man eine Frage stellt, ist erwünscht.

    Thread-Starter jonn10

    (@jonn10)

    @espiat:
    Meine Ursprungsfrage war: Wie bindet man Shortcodes in WordPress ein?

    Ein Kontaktformular ist nicht erwünscht.
    -> Hörte sich genau nach so etwas an. Deine Beschreibung ist an der Stelle auch ungenau.

    Von einem Kontaktformular oder ähnlichem habe ich nicht geschrieben, sondern vom automatischen Aufruf eines Mailprogramms mit Vorbesetzung des/der Empfänger.

    Und ein voll funktionsfähiges PHP-Script ist vorhanden.
    Wenn es auf dem Stand der Zeit ist, dann setze es ein. Kommt es aus einer vetrauenswürdigen Quelle(?

    Es ist sicher und seit Jahren bewährt, und „wie setze ich es ein“ war gerade meine Frage.

    Daher wundert es mich, dass es in WordPress kompliziert sein soll.
    Nein es ist auch nicht kompliziert.

    Da wird von Plugin Code Snippets und Shortcodes geschrieben, wobei es aufgrund meiner Suche kein Plugin gibt, das meine Anforderungen erfüllt.
    Bei Verwendung von shortcodes soll die functions.php verändert werden, auf die ich über wordpress nicht gelange und die sehr wichtige zentrale Funktionen hat.
    Wenn man einen neuen php-Aufruf nicht allein innerhalb wordpress bewerkstelligen kann, so ist dies doch für einen Endanwender von WordPress nicht einfach.

    Thread-Starter jonn10

    (@jonn10)

    @radarin:
    espiat hat vor dem Snippets Plugin gewarnt.
    Nun habe ich aber auf der offiziellen Seite WordPress.org
    (https://de.wordpress.org/plugins/code-snippets/)
    diese Methode gefunden ohne Hinweis auf Risiken.
    Was gilt nun?

    Thread-Starter jonn10

    (@jonn10)

    @all:
    Ist der Begriff shortcode in dem von mir gebrachten Zitat im ersten Beitrag überhaupt korrekt?
    Shortcodes haben doch die Form [….] oder sehe ich dies falsch?

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 18)
  • Das Thema „Wie bindet man Shortcodes in WordPress ein?“ ist für neue Antworten geschlossen.