• Zur Hauptnavigation springen
  • Skip to main content
  • Zur Fußzeile springen

Gärtner Webentwicklung

Maßgeschneiderte Web-Lösungen für Ihre Bedürfnisse

  • Über mich
  • WordPress Mentoring
  • Referenzen
  • Ressourcen
    • Empfohlene Plugins
    • Empfohlene Hilfsmittel
    • Empfohlene Hoster
    • Code-Schnipsel
    • Tutorials
    • Alternativen zu WordPress

Virtuelle Seiten „on the fly“ anlegen

25. September 2019 von Sebastian Gärtner Kommentar verfassen

Manchmal ist es hilfreich auf URLs dynamisch antworten zu können. Eine statische Seite anzulegen fühlt sich aber nicht stimmig an, oder geht einfach nicht.

Für solche Fälle braucht es „virtuelle“ Seiten. Also Seiten im WordPress, die dadurch entstehen, dass sie aufgerufen werden.

Solche virtuelle Seiten verwende ich z. B. um auf die Return-URLs des PayPal-Buttons zu antworten.

Hier ein bisschen Code

<?php
/**
 * Handles PayPal return pages
 */

/* adds rewrite rules so paypal urls are easy and nice */
function gw_add_rewrite_rules_paypal_return_pages() {
	add_rewrite_rule( 'paypalsuccess/(\d+)/?$', 'index.php?paypal=success&amp;paypal_content_id=$matches[1]', 'top' );
	add_rewrite_rule( 'paypalcancel/(\d+)/?$', 'index.php?paypal=cancel&amp;paypal_content_id=$matches[1]', 'top' );
}
add_action( 'init', 'gw_add_rewrite_rules_paypal_return_pages' );


/* makes new query variable accessible - needed later */
function gw_add_query_vars_paypal( $query_vars ) {
	$query_vars[] = 'paypal';
	return $query_vars;
}
add_filter( 'query_vars', 'gw_add_query_vars_paypal' );


/* make rewrite tag accessible - so can be used in template */
function gw_add_rewrite_tag_paypal() {
	add_rewrite_tag( '%paypal_content_id%', '([^&amp;]+)' );
}
add_action( 'init', 'gw_add_rewrite_tag_paypal', 10, 0 );


function gw_redirect_paypal_return_pages() {

	$paypal_result = get_query_var( 'paypal' );
	$post_id       = get_query_var( 'paypal_content_id' );

	if ( 'success' === $paypal_result ) {

		global $current_user;

		include get_stylesheet_directory() . '/paypal-success.php';
		exit();
	} elseif ( 'cancel' === $paypal_result ) {
		include get_stylesheet_directory() . '/paypal-cancel.php';
		exit();
	} else {
		return;
	}
};
add_action( 'template_redirect', 'gw_redirect_paypal_return_pages' );

gw_add_rewrite_rules_paypal_return_pages legt neue Rewrite-Regeln an, damit kann die angegebenen URL aufgerufen werden und wird von WordPress verarbeitet

gw_add_query_vars_paypal macht den Parameter „paypal“ für WordPress bekannt um dann in gw_redirect_paypal_return_pages verwendet zu werden.

In gw_redirect_paypal_return_pages wird WordPress angewiesen statt das vorgesehene Template zu laden eine Seite aufzurufen und danach abzubrechen.

gw_add_rewrite_tag_paypal macht glaube ich tatsächlich nichts mehr. Eigentlich sollte die Funktion „paypal_content_id“ im Theme verfügbar machen, darauf kann ich aber garnicht zugreifen, weil meine PHP-Dateien nicht im WordPress-Loop sind.

Kategorie: Code-Schnipsel

Leser-Interaktionen

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Vorheriger Beitrag: « PayPal Spenden Link
Nächster Beitrag: Facebook Messenger Chatbot anlegen »

Footer

Kontakt

Sebastian Gärtner
mail@gaertner-webentwicklung.de
+49 157 729 30 577
(Erstkontakt bitte via Mail)

  • Kontakt
  • Datenschutzerklärung