Daten aus einer anderen database anzeigen

Ich arbeite an einem benutzerdefinierten Plugin, das die Eigenschaftsinformationen aus unserer Nicht-Wordpress-database holt. Das funktioniert gut. Wo ich Probleme habe, ist es, das ganze Frontend zu arbeiten.

Ich habe mein Plugin-Setup mit einem benutzerdefinierten Post-Typ namens property (url: http: // localhost / property ). Auf der archive-property.php habe ich eine php-function, die x-Eigenschaften einbezieht (möchte wissen, wie man archive-property.php loswird, aber es funktioniert jetzt).

Auf der Seite archive-property.php habe ich einen Link, der so aussieht: http: // localhost / property / 12345 / wo die Zahlen die MLSID ist. Ich kann diese Informationen in der folgenden function erfassen:

function single_property() { if (is_singular() ) { echo "We ARE singular!
"; $uri = $_SERVER['REQUEST_URI']; $data = explode('/',$uri); echo ("MLS ID is: ".$data['2']); die(); } } add_action('pre_get_posts','single_property');

Wenn ich die ‘die ()’ statement nicht addiere, wird mir eine Seite nicht gefunden (nicht eine 404, sondern die ‘Fehler’ Seite mit der Nachricht: Ups! Diese Seite kann nicht gefunden werden.)

Ich hoffe, dass dies alles einen Sinn ergibt, da ich nicht zu 100% das bin, was ich an diesem Punkt suche.

Vielen Dank für Ihre Zeit.

Solutions Collecting From Web of "Daten aus einer anderen database anzeigen"

Und da ist dein Problem – WordPress muss die URL verstehen. Ansonsten ist es in der Tat 404, weil es nichts entspricht, was WP “weiß”.

Sie müssen dieses Verständnis schaffen, zum Beispiel mit der Rewrite-API . Da Ihre Daten auch extern sind und nicht wirklich Teil des WP-Kontextes sind, müssen Sie am Ende wahrscheinlich auch die 404-Entscheidung außer Kraft setzen.

Im Büro verwenden wir eine Kombination von Rewrite-Regeln und Hinzufügen einer benutzerdefinierten function zu template_redirect

Eine Rewrite-Regel, die Sie verwenden könnten, ist die folgende (ungetestete):

 add_rewrite_rule( 'property/([0-9]+)/?', 'index.php?property=$matches[1]', 'top' ); 

Natürlich müssen Sie die Rewrite-Regeln leeren , diese Seite hat gute Beispiele. Mach das nicht bei jeder Seitenladung!

Dann können Sie die Anfrage mit template_redirect erfassen:

 add_action( 'template_redirect', 'prefix_route_property_pages' ); function prefix_route_property_pages() { $property = get_query_var( 'property' ); if ( ! empty( $property ) ) { // Do awesome stuff, preferably call a function: prefix_do_awesome_stuff() // You need this to overwrite WordPress's 404 global $wp_query; $wp_query->is_404 = false; status_header( 200 ); } } 

Sie müssen etwas HTML selbst rendern. Wenn Sie Seiten aus Ihrem Thema einfügen möchten, können Sie locate_template verwenden . Passen Sie darauf auf, weil die Standardvariablen von WordPress nicht korrekt eingestellt sind und einige Themen ausflippen können.