Frage

Ich versuche, einige Funktionen von einem Plugin ich in ein Wordpress Thema gemacht habe, hinzufügen, aber ich wenig Freude habe. Die Dokumentation ist nicht wirklich mir helfen, das Problem zu lösen, so vielleicht hier jemand helfen kann.

Ich habe ein Plugin in Wordpress, die aktiviert ist und funktioniert gut. Die Klasse für dieses Plugin hat eine Funktion namens generateHtml die Ich mag von einem Wordpress Theme zugreifen würde. Aber was auch immer ich versuche, kann ich nicht scheinen, um meinen Plugins Code zugreifen zu können.

Kann entweder geben Sie mir eine Zusammenfassung dessen, was ich zu tun, um ein Thema zugreifende Code aus einem Plugin zu erhalten und / oder es weisen darauf hin, ich falsch in meinem Code werde:

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'));
}

Der Abschnitt von Thema Kopfseite:

<?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';
    }
?>

Zur Zeit alles, was ich je sehen wird „Nein“ und „Funktion nicht gefunden“. Vielen Dank für jede Eingabe.

Lee,

War es hilfreich?

Lösung

Für den Anfang „imagerotator_show“ ist keine Funktion; es ist der Name einer Art der Aktion. Wenn Sie die add_action () Funktion verwenden, Wordpress kommt noch hinzu, Ihre Methode, um die Liste der Funktionen / Methoden aufrufen, wenn eine bestimmte Aktion ausgelöst wird. So kann Ihr zweiter Test wird immer mit reagieren ‚Funktion nicht gefunden‘.

Die wahrscheinlichste Ursache für das erste Problem versagt die Methode, die Sie als eine öffentliche Methode aufrufen wollen zu erklären. Sie machen auch den Code schwieriger, als es sein muss.

Die beste Vorgehensweise I Methoden zur Deklaration und Registrierung Haken aus einer Klasse sieht wie folgt aus etwas gesehen habe:

if ( ! class_exists( 'Foo' ) ):
  class Foo {
    function __construct() {
      add_action( 'hook_name', array( &$this, 'my_hook_implementation' ) );
    }

    function my_hook_implementation() {
      // does something
    }

    public function my_special_method() {
      // does something else
    }
  }

if ( class_exists( 'Foo' ) ):
  $MyFoo = new Foo();

Auf diese Weise können Sie Ihre Klasse alle ihre Implementierung halten Details privat. Wenn Sie benötigen my_special_method () aufrufen, tun Sie es wie folgt:

$MyFoo->my_special_method();

Andere Tipps

@ Andrew, da ich nicht kommentieren kann ich dachte, ich würde Ihre Neben Frage beantworten. Siehe auch:

http://net.tutsplus.com / tutorials / Wordpress / create-Wordpress-Plugins-mit-oop-Techniken /

Dabei gilt es wird erklärt, dass, wenn eine Rückruffunktion von einem Objekt definieren Sie die Array-Funktion verwenden. Es ist im Grunde sagt die Funktion ‚my_hook_implementation‘ erhalten von dem Objekt $ dieser und es als Callback-Parameter an den Add Aktion Haken verwenden. Es ist, weil Sie die Funktion im Rahmen des Objekts definiert, und Sie haben den Umfang, um PHP zu definieren, zu wissen, welche Funktion Sie sprechen. Der Umfang wird das Objekt, auf das die Variable $ this.

Sie müssen nur do_action() Funktion, in Ihrem Thema verwenden.

Wenn Sie die Funktion generateHtml zu erscheint in Ihrem header.php wollen, müssen Sie nur die Datei header.php und Paste <?php do_action('imagerotator_show'); ?> öffnen, wo Sie wollen, und dann wird Ihre Funktion dort aufgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top