2 Stimmen

Kann ich eine von Zend-Framework betriebene Webanwendung in eine Wordpress-Site integrieren?

Ich habe ein Projekt, in dem ich in der Lage sein möchte, wp_list_pages() auf einer Seite aufzurufen, die auch das Zend Framework verwendet, um einige komplexe Schnittstellen verwaltet benutzerdefinierte Daten außerhalb von Wordpress.

Diese Seite sollte den Benutzer auch zur Wordpress-Anmeldeseite weiterleiten, wenn er nicht bereits mit der entsprechenden Berechtigungsstufe angemeldet ist.

Wie würde dies auf hohem Niveau funktionieren, d.h. muss ich die Wordpress-Bootstrap-Datei bearbeiten, um die benutzerdefinierte Schnittstelle basierend auf einer bestimmten URL oder etwas bedingt zu implementieren, aber immer noch bestimmte Dateien enthalten, um wp_list_pages() auf dieser benutzerdefinierten Schnittstelle aufrufen zu können?

1voto

Fernando Briano Punkte 7639

Ich habe ein paar WordPress-Plugins entwickelt, und ich habe festgestellt, dass es wirklich einfach zu erweitern ist. Mit Zend habe ich allerdings noch nicht gearbeitet.

Sie sollten die WordPress-Plugin-Api überprüfen. Vor allem den Teil über Aktionen, Filter und Hooks: http://codex.wordpress.org/Plugin_API

Sie können sogar einige Funktionen außer Kraft setzen (ich bin nicht sicher, ob wp_list_pages() ist überschreibbar).

Es ist ziemlich gut dokumentiert, und es gibt eine große Entwicklergemeinschaft im IRC, in Foren usw.

1voto

Danke Fernando.

Ich habe gerade gelesen dieses Thema was darauf hindeutet, dass man Zend in jedem Skript verwenden kann, indem man einfach einfügt:

require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

So gegeben, dass alles, was ich brauche, um Zend für ist auf einer Seite zu verwenden, kann ich nur diesen Code in eine benutzerdefinierte Template-Datei, die ich auf die entsprechende Seite in der Navigation zuweisen? Wenn ich Javascript verwenden würde, um das Formular über XHR zu übermitteln, würde die angeforderte URL die Form "/controller/action" annehmen - aber Zend würde das Controller-Verzeichnis nicht kennen.

Könnte ich Zend-Code in die Wordpress-Bootstrap, d.h. den obigen Code plus die frontController-Konfiguration, und dann Zend wo auch immer verwenden?

1voto

Ich habe also eine Seite in Wordpress und eine benutzerdefinierte Vorlage für diese Seite, in die ich Folgendes eingefügt habe Zend-Framework Code:

require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'      => 'localhost',
    'username'  => 'username',
    'password'  => 'password',
    'dbname'    => 'dbname'
));
Zend_Db_Table::setDefaultAdapter($db);

class Users extends Zend_Db_Table_Abstract {
    protected $_name = 'wp_users';
}

$users = new Users();
$users = $users->fetchAll()->toArray();

print_r($users[0]['user_login']);

Dies alles funktioniert gut, so ist es eindeutig möglich, Zend in Verbindung mit Wordpress zumindest bis zu einem gewissen Grad zu verwenden.

Es wird offensichtlich, dass das Problem besteht darin, wer die URL-Umschreibung kontrolliert oder das Routing oder das Bootstrapping (bin mir der korrekten Terminologie nicht sicher). Wenn ich das Ende des obigen Codes, beginnend mit $users = new Users();, wie folgt in einen Controller einfügen würde:

class UsersController extends Zend_Controller_Action {
    function getUserAction() {
        $this->_helper->viewRenderer->setNoRender();

        $users = new Users();
        $users = $users->fetchAll()->toArray();

        echo $users[0]['user_login'];
    }
}

Wie würde ich diese Funktion dann aufrufen? Meine Absicht wäre es, sie von Javascript über eine XHR-Anfrage als Reaktion auf ein Ereignis auf der Seite aufzurufen, aber die Anforderung der URL "index.php/Users/getUser/" gibt "No input file selected" zurück. Versuchen Sie, auf die URL zuzugreifen http://www.domain.com/Users/getUser/ erzeugt eine Wordpress 404-Seite.

Gibt es eine Möglichkeit, dies zu umgehen? Es gilt nicht nur für Wordpress, natürlich - ich nehme an, es gilt für jede bestehende Anwendung, die Anfragen über ein Bootstrap umschreibt/umleitet.

1voto

Ich denke, Sie könnten das tun, indem Sie das Framework einfach in die Seite importieren, für die Sie es benötigen. Ich weiß nicht, wie Zend funktioniert, aber überprüfe die Pfade, wo du deine Verzeichnisse ablegen musst, damit Zend sie findet Wie gesagt, ich denke, du könntest das tun, experimentiere einfach und erzähle uns, wie es gelaufen ist!

Hüten Sie sich vor Namenskonflikten für Funktionen und/oder Variablen, dies sollte jedoch kein großes Problem darstellen, wenn Sie von so beliebten Produkten wie WordPress und Zend kommen (die theoretisch gut kodiert sein sollten).

0voto

Fernando Briano Punkte 7639

Ich denke, Sie könnten das tun, indem Sie das Framework einfach in die Seite importieren, für die Sie es benötigen. Ich weiß nicht, wie Zend funktioniert, aber überprüfen Sie die Pfade, wo Sie Ihre Verzeichnisse ablegen müssen, damit Zend sie findet. Ich denke Sie könnten das tun, experimentieren Sie einfach und erzählen Sie uns, wie es gelaufen ist!

Hüten Sie sich vor Namenskonflikten für Funktionen und/oder Variablen, dies sollte jedoch kein großes Problem darstellen, wenn Sie von so beliebten Produkten wie WordPress und Zend kommen (die theoretisch gut kodiert sein sollten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X