WordPress: der Zugriff auf Ein Plugin, das die Funktion Von Thema
Ich versuche, fügen Sie einige Funktionen aus einem plugin, das ich gemacht habe in ein WordPress-theme, aber ich habe wenig Freude. Die Dokumentation ist nicht wirklich mir helfen das problem zu lösen, so dass vielleicht hier jemand helfen kann.
Ich habe ein plugin in WordPress, das ist aktiviert und funktioniert Prima. Die Klasse für dieses plugin eine Funktion, die aufgerufen wird generateHtml möchte ich den Zugriff von einem WordPress-Theme. Aber was auch immer ich versuche, ich kann nicht scheinen, um auf meinen plugin-code.
Können entweder geben Sie mir eine Zusammenfassung von dem, was ich tun müssen, um ein Thema Zugriff auf code aus einem plugin und/oder zeigen gibt, werde ich falsch in meinem code:
Plugin:
<?php
/** Usual comments here **/
if (!class_exists("ImageRotator")) {
class ImageRotator {
private $uploadPath = '';
private $pluginPath = '';
private $options;
function __construct() {
$this->uploadPath = dirname(__file__).'\\uploads\\';
//add_shortcode('imagerotator', array(&$this, 'generateHtml'));
}
//Various functions for plugin
function generateHtml() {
echo '<p>Hello World</p>';
}
}
}
/**
* Create instance of image rotator
*/
$imageRotator = new ImageRotator();
/**
* Create actions & filters for WordPress
*/
if (isset($imageRotator)) {
//Actions
add_action('admin_menu', array(&$imageRotator, 'createMenu'));
add_action('admin_init', array(&$imageRotator, 'registerSettings'));
add_action('imagerotator_show', array(&$imageRotator, 'generateHtml'));
}
Teil von theme-header Seite:
<?php if (isset($imageRotator)) {
$imageRotator->generateHtml();
} else if (isset($ImageRotator)) {
print_r($ImageRotator);
} else {
echo '<p>Nope!</p>';
}
if (function_exists("imagerotator_show")) {
echo 'Function found';
} else {
echo 'Function NOT found';
}
?>
Derzeit alles, was ich jemals sehen, ist "Nein" und "Funktion NICHT gefunden". Vielen Dank für jede Eingabe.
Lee,
- Als Seite beachten, dies sollte hilfreich sein, um allen wordpress-theme-Designer: devideas.blogetery.com/testing-wordpress-themes-easily
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für den Anfang, "imagerotator_show" ist nicht eine Funktion; es ist der name einer Art von Handlung. Wenn Sie die add_action () - Funktion, die WordPress fügt nur Ihre Methode, um die Liste der Funktionen/Methoden aufrufen, wenn eine bestimmte Aktion ausgelöst wird. Damit Ihren zweiten test reagiert immer mit "Funktion NICHT gefunden".
Die wahrscheinlichste Ursache für das erste problem ist, andernfalls zu erklären, dass die Methode, die Sie aufrufen möchten, wie Sie eine öffentliche Methode. Sie sind auch, was den code schwieriger, als es sein muss.
Die beste Praxis, die ich gesehen habe für die Deklaration von Methoden und Registrierung der hooks aus einer Klasse sieht wie folgt aus:
Damit können Sie Ihre Klasse zu halten alle seine Umsetzung details private. Wenn Sie aufrufen müssen, my_special_method(), tun Sie es wie folgt:
$this
durch Verweis auf Zeile 4. Ich bin mit der OO-Formular für WordPress-plugins.@andrew, da kann ich nicht kommentieren, ich dachte, ich würde die Antwort auf Ihre Nebenleistungen Frage. Siehe:
http://net.tutsplus.com/tutorials/wordpress/create-wordpress-plugins-with-oop-techniques/
Wo es wird erklärt, dass bei der Definition einer callback-Funktion aus einem Objekt, verwenden Sie die array-Funktion. Es ist im Grunde sagen die Funktion 'my_hook_implementation' aus dem Objekt $this und verwenden Sie es wie der parameter callback, um den Aktion hinzufügen-Haken. Es ist, weil Sie definiert die Funktion innerhalb des Gültigkeitsbereichs des Objekts und Sie haben, um den Bereich definieren, damit PHP weiß, welche Funktion Sie sprechen. Der Umfang wird das Objekt bezeichnet, die durch die variable $this.
Brauchen Sie nur zu verwenden
do_action()
- Funktion, in deinem Thema.Wenn Sie möchten die Funktion
generateHtml
erscheint in Ihrem header.php Sie müssen nur öffnen Sie die header.php Datei und fügen Sie<?php do_action('imagerotator_show'); ?>
wo Sie wollen, und dann Ihre Funktion, wird es genannt.