Wie rufe ich Funktionen aus meinem Plugin in der WP-Vorlage auf?

Lesezeit: 4 Minuten

Ich habe ein Kalender-Plugin erstellt und möchte nun eine Ereignisliste in einer meiner Vorlagen anzeigen. Der Code, den ich jetzt verwende, ist dieser:

include_once(WP_CAL_PLUGIN_DIR.'eventcal.class.php');

$calendar = new EventCalendar();
$events = $calendar->getMultipleEvents('5');

(...)

<table>
<?php foreach($events as $event) : ?>
  <tr>
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'dm'); ?></span></td>
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'time'); ?></span></td>
    <td><?php echo $event->name; ?></td>
  </tr>
<?php endforeach; ?>
</table>

Gibt es eine Möglichkeit, Funktionen in meinem Plugin aufzurufen, ohne das WP-Plugin einbinden und eine neue Klasseninstanz erstellen zu müssen?

  • Warum möchten Sie das WP-Plugin nicht einbinden und eine neue Klasseninstanz erstellen?

    – bzlm

    23. September 2010 um 18:45 Uhr

  • Ich dachte, es gäbe einen “WP-korrekteren” Weg, dies zu tun – etwas Ähnliches wie WP-Kurzcode.

    – Stefan

    23. September 2010 um 20:49 Uhr

  • Ja. In diesem Fall sollten Sie einen Shortcode registrieren. 🙂 codex.wordpress.org/Shortcode_API

    – bzlm

    23. September 2010 um 21:15 Uhr

  • Aber Shortcodes werden nur im Text verwendet und nicht im PHP-Template?

    – Stefan

    23. September 2010 um 21:58 Uhr

  • Wenn Sie den Shortcode in der Vorlage ausführen müssen, können Sie dies tun do_shortcode('shortcode-handle').

    – John P. Bloch

    24. September 2010 um 0:41 Uhr

Um Shortcode innerhalb einer Vorlage auszuführen, verwenden Sie die Funktion do_shortcode('[my-shortcode-handle]'). Ihr Shortcode muss wie gewohnt registriert werden (siehe WordPress-Codex zur Shortcode-API), bevor Sie diese in der Vorlage verwenden können. Alle Attribute, Insider-Inhalte usw. sollten ebenfalls enthalten sein.

echo do_shortcode( '[my-shortcode foo="bar"]Shortcode content[/my-shortcode]' );

Denken Sie auch daran, die Rückgabe zu echoen (oder zumindest einer Variablen zuzuweisen), da sie nur die Ausgabe des Shortcodes zurückgibt.

Aus: http://codex.wordpress.org/Plugin_API

Hooks werden von WordPress bereitgestellt, damit sich Ihr Plugin in den Rest von WordPress einklinken kann; das heißt, Funktionen in Ihrem Plugin zu bestimmten Zeiten aufzurufen und dadurch Ihr Plugin in Gang zu setzen. Es gibt zwei Arten von Haken:

  1. Aktionen: Aktionen sind die Hooks, die der WordPress-Kern an bestimmten Punkten während der Ausführung startet oder wenn bestimmte Ereignisse eintreten. Ihr Plugin kann mithilfe der Aktions-API festlegen, dass an diesen Stellen eine oder mehrere seiner PHP-Funktionen ausgeführt werden.
  2. Filter: Filter sind die Hooks, die WordPress startet, um Text verschiedener Typen zu ändern, bevor er zur Datenbank hinzugefügt oder an den Browserbildschirm gesendet wird. Ihr Plugin kann mithilfe der Filter-API festlegen, dass eine oder mehrere seiner PHP-Funktionen ausgeführt werden, um bestimmte Texttypen zu diesen Zeiten zu ändern.

    Aktionen

Aktionen werden durch bestimmte Ereignisse ausgelöst, die in WordPress stattfinden, z. B. das Veröffentlichen eines Beitrags, das Ändern von Themen oder das Anzeigen einer Seite des Admin-Panels. Ihr Plugin kann auf das Ereignis reagieren, indem es eine PHP-Funktion ausführt, die eine oder mehrere der folgenden Aktionen ausführen kann:

* Modify database data
* Send an email message
* Modify what is displayed in the browser screen (admin or end-user) 

Die grundlegenden Schritte, um dies zu erreichen (weiter unten ausführlicher beschrieben), sind:

  1. Erstellen Sie die PHP-Funktion, die ausgeführt werden soll, wenn das Ereignis eintritt, in Ihrer Plugin-Datei.
  2. Haken Sie die Aktion in WordPress an, indem Sie add_action() aufrufen
  3. Fügen Sie Ihre PHP-Funktion in eine Plugin-Datei ein und aktivieren Sie sie.

BEISPIEL:

function email_friends($post_ID)  {
    $friends="[email protected],[email protected]";
    mail($friends, "sally's blog updated", 
      'I just put something on my blog: http://blog.example.com');
    return $post_ID;
}

Verknüpfen Sie sich mit WordPress

Nachdem Ihre Funktion definiert ist, besteht der nächste Schritt darin, sie bei WordPress zu “haken” oder zu registrieren. Rufen Sie dazu add_action() im globalen Ausführungsbereich Ihrer Plugin-Datei auf:

add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] );

wo:

hook_name Der Name eines von WordPress bereitgestellten Action-Hooks, der angibt, mit welchem ​​Ereignis Ihre Funktion verknüpft werden soll. your_function_name Der Name der Funktion, die nach dem durch Hook_Name angegebenen Ereignis ausgeführt werden soll. Dies kann eine Standard-PHP-Funktion, eine im WordPress-Kern vorhandene Funktion oder eine von Ihnen in der Plugin-Datei definierte Funktion sein (z. B. „email_friends“, wie oben definiert). Priorität Ein optionales ganzzahliges Argument, das verwendet werden kann, um die Reihenfolge anzugeben, in der die einer bestimmten Aktion zugeordneten Funktionen ausgeführt werden (Standard: 10). Niedrigere Zahlen entsprechen einer früheren Ausführung, und Funktionen mit derselben Priorität werden in der Reihenfolge ausgeführt, in der sie der Aktion hinzugefügt wurden. Accepted_args Ein optionales Integer-Argument, das definiert, wie viele Argumente Ihre Funktion akzeptieren kann (Standardwert 1). Dies ist nützlich, da einige Hooks mehr als ein Argument an Ihre Funktion übergeben können. Dieser Parameter ist neu in Version 1.5.1.

Im obigen Beispiel würden wir die folgende Zeile in die Plugin-Datei einfügen:

add_action ( 'publish_post', 'email_friends' );

  • Haken kenne ich. Aber hier gibt es keinen Auslöser. Ich rufe nur Daten aus einer DB-Tabelle ab, wenn ich eine bestimmte Vorlage lade. Also ich denke, Johns Tipp zur Verwendung do_shortcode('shortcode-handle') ist der beste Weg zu gehen.

    – Stefan

    24. September 2010 um 14:57 Uhr

1382870cookie-checkWie rufe ich Funktionen aus meinem Plugin in der WP-Vorlage auf?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy