So integrieren Sie WordPress in Kohana 3

Lesezeit: 8 Minuten

So integrieren Sie Wordpress in Kohana 3
Alex

Ich muss jetzt eine Kohana 3-Site mit einem WordPress-Blog versehen.

Ich habe Kerkness gesehen Kohana für WordPressaber es scheint das Gegenteil von dem zu sein, was ich will.

Hier sind die Optionen, an die ich gedacht habe

  • Gestalten Sie eine Vorlage so, dass sie genau wie die Kohana-Site aussieht (zeitaufwändig, nicht DRY und funktioniert möglicherweise nicht)
  • Fügen Sie den Blog in eine ein iframe (hässlich wie die Hölle)
  • cURLen Sie die WordPress-Seiten ein. Das bedeutet natürlich, dass ich Ebenen zwischen dem Posten von Kommentaren usw. erstellen muss, was sich nach zu viel Arbeit anhört.

Gibt es eine Möglichkeit, einen WordPress-Blog in eine vorhandene Kohana-Anwendung einzubinden? Haben Sie Vorschläge?

ich fand Dieser Beitrag beschreibt das Kohana für WordPress-Pluginaber ich bin immer noch verwirrt, wie es funktioniert.

Bedeutet das, dass ich innerhalb von WordPress einen Kohana-Controller anrufen kann? Hilft mir das in meiner Situation?

  • Hallo Alex, können Sie bitte diese SO-Frage auf stackoverflow.com/questions/20934551/… überprüfen, die sich auf den Zugriff auf Kohana-Anwendungsdaten in WordPress bezieht. Danke

    – Benutzer2681579

    6. Januar 2014 um 6:56 Uhr

Oh, das habe ich vor langer Zeit gemacht (eigentlich gegen Ende letzten Jahres).

Annahmen

  1. Sie verwenden WordPress-Permalinks mit mod_rewrite oder einer ähnlichen Option.
  2. Sie haben register_globals() nicht eingeschaltet. Schalten Sie es aus, um sicherzustellen, dass die globalen Variablen von WordPress nicht von Kohana entfernt werden.

Umbenennung

Zuerst müssen Sie die umbenennen __() Funktion in Kohana. Sagen Sie, Sie benennen es um __t(). Sie müssten es überall dort ersetzen, wo es erscheint, was ziemlich einfach ist, wenn Sie einen Editor wie Netbeans verwenden, der Verwendungen einer Funktion oder Methode finden kann.

Hierarchie

Die nächste Entscheidung, die Sie treffen müssen, ist, ob Sie WordPress in Kohana oder Kohana in WordPress laden möchten. Ich bevorzuge letzteres, das ich unten dokumentiere. Letzteres könnte ich dokumentieren, wenn Sie diesen Weg bevorzugen.

Ich habe das Kohana-Verzeichnis in mein Themenverzeichnis gelegt.

Einfach in deiner functions.php-Datei deines Themes

include TEMPLATEPATH . '/kohana/index.php';

Kohana-Konfiguration

Die index.php-Datei Ihres Kohana benötigt ebenfalls etwas Arbeit. Entfernen Sie die Zeilen, die nach install.php suchen, während sie geladen werden ABSPATH . WPINC . 'install.php' stattdessen und zeigen Sie eine Fehlermeldung in Ihrem WordPress-Adminbereich an. Sie müssen auch das error_reporting ändern, da WordPress im Moment E_STRICT fehlschlägt.

Sie müssen sehr wahrscheinlich die letzten paar Zeilen Ihres Bootstrap (in Kohana) entfernen, die die Anfrage verarbeiten, und Ihre Init ändern:

Kohana::init(array(
    'base_url'   => get_bloginfo('home') . "https://stackoverflow.com/",
    'index_file'   => '',
));

Fügen Sie entweder in Ihrer WordPress-Datei functions.php oder in Ihrem Bootstrap diese Zeilen hinzu:

remove_filter('template_redirect', 'redirect_canonical');
add_filter('template_redirect', 'Application::redirect_canonical');

wo Anwendung ist eine Klasse deiner Wahl.

Mein Code für die Anwendung Klasse (ohne die Klassendefinition) ist:

public static function redirect_canonical($requested_url=null, $do_redirect=true)
{
    if (is_404() && self::test_url())
    {
        echo Request::instance()->execute()->send_headers()->response;
        exit;
    }

    redirect_canonical($requested_url, $do_redirect);
}

public static function test_url($url = NULL)
{
    if ($url === NULL)
    {
        $url = str_replace('?'.$_SERVER['QUERY_STRING'], '', $_SERVER['REQUEST_URI']);

        $url = trim($url, "https://stackoverflow.com/");
    }

    foreach (Route::all() as $route)
    {
        /* @var $route Route */
        if ($params = $route->matches($url))
        {
            $controller="controller_";

            if (isset($params['directory']))
            {
                // Controllers are in a sub-directory
                $controller .= strtolower(str_replace("https://stackoverflow.com/", '_', $params['directory'])).'_';
            }

            // Store the controller
            $controller .= $params['controller'];

            $action = Route::$default_action;

            if (isset($params['action']))
            {
                $action = $params['action'];
            }

            if (!class_exists($controller))
                return false;
            if (!(method_exists($controller, 'action_' . $action) || method_exists($controller, '__call')))
                return false;
            return true;
        }
    }

    return false;
}

wodurch WordPress die Umleitung für jede Seite, die sich möglicherweise verschoben hat, durchführen kann, z /über/kalender zu /Kalender solange du keine hast Über Controller u Kalender Aktion definiert.

Da haben Sie es also. Alle URLs, die nicht in WordPress definiert sind, fallen auf Ihren definierten Controller (oder verwenden Sie die 404-Vorlage Ihres Themas).

Zusätzlich

Dies ist nicht erforderlich, aber Sie können die header.php Ihres Designs in Ihrem Kohana-Views-Ordner (Anwendung oder in einem Modul) und aus einer Ihrer Designdateien ablegen

echo View::factory('header')

Sie könnten dasselbe mit Ihrer Fußzeile (oder anderen Dateien für diese Angelegenheit) tun. In Ihrer header.php könnten Sie auch Folgendes tun:

if (isset($title)) echo $title; else wp_title(YOUR_OPTIONS);

Auf diese Weise könnten Sie in Ihrem Controller

echo View::factory('header')->set('title', 'YOUR_TITLE');

Um URLs konsistent zu halten, müssen Sie möglicherweise das / vom Ende der WordPress-Permalinks entfernen /%year%/%monthnum%/%day%/%postname%/ wird /%year%/%monthnum%/%day%/%postname%etc


Bitte lassen Sie mich wissen, wenn Sie weitere Hilfe bei der Integration von WordPress und Kohana benötigen.

  • +1 Das ist großartig! Danke vielmals. Am Ende habe ich Kohana für das Projekt übersprungen und nur WordPress verwendet, und ich habe viel darüber gelernt, wie WordPress funktioniert (und einige fragwürdige Codierungen …). Ich werde mir das auf jeden Fall ansehen, wenn ich mich entscheide, diese Projekte in Zukunft gemeinsam zu nutzen.

    – Alex

    29. August 2010 um 1:37 Uhr

  • Danke. Viel Glück mit Ihrem Projekt.

    – Zahymaka

    29. August 2010 um 1:53 Uhr

  • Ich verwende das WordPress-Forum in meiner Kohana-Anwendung. Ich behalte die Kohana-Anwendungsdatenbank und die WordPress-Datenbank in einer separaten Instanz. Ich möchte einen Datenbankeintrag in der WordPress-Datenbank vornehmen und gleichzeitig einen neuen Benutzer in der Kohana-Anwendung hinzufügen. Ist dies mit der folgenden Antwort möglich? Wenn möglich, können Sie eine Idee geben.

    – Benutzer2681579

    5. Januar 2014 um 13:54 Uhr


So integrieren Sie Wordpress in Kohana 3
Galen

Ich habe WordPress tatsächlich für das CMS einer Code-Igniter-Site verwendet. Dies ist die Methode, die ich zum Abrufen von Seiteninhalten verwendet habe, nicht von Blog-Inhalten, aber vielleicht können Sie sie ein wenig an Ihre Bedürfnisse anpassen.

In meinem Front-Controller habe ich die WordPress-Header-Datei hinzugefügt

require('/path/to/wp-blog-header.php');

Dadurch erhalten Sie Zugriff auf die 2 Funktionen, die Sie benötigen

get_page()  – Get the page data from the database
wpautop() – Automatically add paragraph tags to page content

Um Seitendaten zu erhalten

$page_data = get_page( 4 ); // Where 4 is the page ID in wordpress

Wenn Sie diesen Fehler erhalten:

Schwerwiegender Fehler: Nur Variablen können per Referenz übergeben werden…

Du musst es so machen

$page_id = 4;
$page_data = get_page( $page_id );

aufgrund einer Insekt in bestimmten Versionen von php

Dann in der Ansicht

<?= wpautop($page_data->post_content) ?>

Hoffe das hilft


BEARBEITEN


Ich habe WordPress unter /blog im Dateisystem installiert. WordPress läuft also eigentlich ganz normal als Blog. Ich verwende diese Methode nur, um die Seiten zu greifen

  • Danke Galen, aber diesen Teil davon (die Seiten) habe ich bereits in Angriff genommen. Ich habe mich gefragt, ob ich etwas Ähnliches auch für den Blog-Inhalt tun könnte.

    – Alex

    13. Mai 2010 um 22:16 Uhr

  • Danke, verweisen Sie Ihre Benutzer also auf /blog, wenn sie den Blog anzeigen möchten? Wird nach der Anzeige des Blogs zu irgendeinem Zeitpunkt CI verwendet? Ich möchte die gleiche Kopfzeile und Funktionalität meiner Kohana-App beibehalten, also möchte ich lieber nicht auf eine WordPress-Installation verweisen, sondern den Inhalt von WordPress in einer meiner Ansichten erscheinen lassen.

    – Alex

    13. Mai 2010 um 23:37 Uhr

  • In meine WordPress-Datei füge ich tatsächlich meine Kopf-/Fußzeilendatei von CI ein. Es braucht ein wenig Fanakel.

    – Galen

    14. Mai 2010 um 14:50 Uhr

  • Ich verwende das WordPress-Forum in meiner Kohana-Anwendung. Ich behalte die Kohana-Anwendungsdatenbank und die WordPress-Datenbank in einer separaten Instanz. Ich möchte einen Datenbankeintrag in der WordPress-Datenbank vornehmen und gleichzeitig einen neuen Benutzer in der Kohana-Anwendung hinzufügen. Ist dies mit der folgenden Antwort möglich? Wenn möglich, können Sie eine Idee geben.

    – Benutzer2681579

    5. Januar 2014 um 13:55 Uhr

Das wird aufgrund der Funktionsweise von WordPress extrem schwierig. Insbesondere werden überall globale Variablen verwendet, und da Kohana bereichsabhängig ist, können Sie nicht auf diese Variablen zugreifen.

Lange Rede kurzer Sinn: Was Sie wollen, ist fast unmöglich. Wenn Sie es jedoch zum Laufen bringen (ohne WP zu hacken), wäre ich wirklich daran interessiert zu sehen, wie Sie es gemacht haben.

  • Danke, ich dachte, es könnte schwierig sein. Als ich es das letzte Mal ausprobiert habe (mit meinem persönlichen Blog), habe ich das gesamte Frontend in Kohana 2.3 geschrieben. Wenn ich es hinbekomme, lasse ich es dich wissen.

    – Alex

    14. Mai 2010 um 9:25 Uhr

  • können Sie bitte diese SO-Frage auf stackoverflow.com/questions/20934551/… überprüfen und mich anleiten.

    – Benutzer2681579

    5. Januar 2014 um 14:17 Uhr

Siehe hier: http://www.intuitivity.org/archives/8
Ich habe es gestern gemerkt 🙂

Eine andere Lösung besteht darin, sowohl WordPress- als auch Kohana-Installationen vollständig getrennt zu halten. Dann erstellen Sie ein benutzerdefiniertes WordPress-Design, das die Kopf- und Fußzeile aus Kohana zieht (Sie können dafür einen Kohana-Controller erstellen).

Sobald Sie die Kopf- und Fußzeile eingefügt haben, sieht der Blog in Ihre Website integriert aus, obwohl es immer noch eine völlig separate Installation ist. Der Vorteil ist, dass weder WordPress noch Kohana gehackt werden müssen, damit es funktioniert.

In diesem Blogbeitrag finden Sie weitere Details zu dieser Methode: Integration von WordPress in eine Kohana-Anwendung

  • Genau das, wonach ich gesucht habe. Danke Alter!

    – Everton ZP

    16. Juli 2016 um 20:41 Uhr

1646107755 145 So integrieren Sie Wordpress in Kohana 3
Hoss

Ich dachte immer, das wäre relativ einfach. Das heißt, WordPress als Back-End Ihrer Website zu verwenden (zumindest für den Blog-Teil) und Kohana zum Bereitstellen von Beiträgen und Seiten zu verwenden. Wenn ich mich nicht irre, müssten Sie lediglich Ihre Modelle (Beitrag, Kommentar, Seite) so einrichten, dass sie ihre Daten aus der WordPress-Datenbank (mit oder ohne ORM) anstelle einer neuen sammeln.

  • Genau das, wonach ich gesucht habe. Danke Alter!

    – Everton ZP

    16. Juli 2016 um 20:41 Uhr

896360cookie-checkSo integrieren Sie WordPress in Kohana 3

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

Privacy policy