Support » Plugins » Rewrite rule für WordPress Seite einrichten

  • Hallo Zusammen,

    ich versuche derzeit auf meinem lokalen Server (daher kein Link zur Webseite möglich) eine Rewrite Rule ans Leben zu bringen. Komme da aber irgendwie nicht ans Ziel.

    Ich verwende derzeit ein php Programm, welches mir folgende Link
    auf meiner Übersichtsseite erstellt.

    https://lokaldrive:8081/WordPress/product-overview/?referenz=1&productid=0

    Hierbei wird der Parameter ?referenz für eine Produktgruppe verwendet und die productid ist für das jeweilige Produkt zuständig. Bei 0 => Übersicht.

    Innerhalb von WordPress habe ich für Permalinks:
    Beitragsnamen: https://lokaldrive:8081/WordPress/beispielbeitrag/
    eingestellt.

    Ich hätte jetzt gerne entsprechend der Seite, welche ich
    in WordPress aufrufe und wo ich meinen Shortcode einfüge folgende
    Struktur.

    https://lokaldrive:8081/WordPress/beispielbeitrag/gruppe/product

    Ich verwende hierbei das Basis Plugin „Boilerplate“ und habe folgenden Code bis jetzt eingefügt. Mein Plugin heisst hierbei „Content-Finder“.

    includes/class-content-finder.php
    Fkt:

    
    define_public_hooks() {
    	
    	$this->loader->add_action( 'init', $plugin_public, 'rewriterules_init' );             /*  for the rewrite rules needed */
            $this->loader->add_action( 'template_redirect', $plugin_public, 'product_redirect', 0 );  /*  for the rewrite rules needed */		
    }
    

    public/class-content-finder-public.php
    fkt:

    
    public function rewriterules_init(){
        add_rewrite_rule(
            'product/([^/]+)/?$',
            'index.php?referenz=$matches[1]&productid=$matches[2]',
            'top'
        );
    
        add_rewrite_tag('%product%','([^/]*)');
    }

    und

    function product_redirect(){
            
            $product_query = get_query_var( 'product' );
            if( ! empty( $product_query ) ){
     			$link=get_permalink(get_page_by_path("product-overview"))."?referenz=".$product_query['referenz']."&productid=".$product_query['productid'];
            	if( ! empty( $link ) ){
              		wp_redirect( $link );
              		die();
            	}
            else{
            	wp_redirect( home_url() );
            	die();
            	}	 
            }
        }

    Wenn ich jetzt innerhalb meines Programmes eine entsprechende Webseite
    aufmache, wird weiterhin
    https://lokaldrive:8081/WordPress/product-information/?referenz=1&productid=1
    verwendet.

    Ich denke mal, das ich generell hier noch einen Fehler mache. Finde ihn aber nicht. Würde die URL, wenn ich
    https://lokaldrive:8081/WordPress/product-information/?referenz=1&productid=1
    aus meinem php Programm aufrufe, der Webserver automatisch
    die URL ändern in ../gruppe/product oder ist bereits Aufgabe meines
    php Programmes ?

    So richtige Beispiele habe ich hierzu nicht gefunden, meist nur mit einem Parameter.

    Für jede Hilfe bin ich dankbar.
    Viele Grüße
    R.

    • Dieses Thema wurde geändert vor 1 Monat, 2 Wochen von Ritchie.
    • Dieses Thema wurde geändert vor 1 Monat, 2 Wochen von Bego Mario Garde. Grund: Codeformatierung
Ansicht von 1 Antwort (von insgesamt 1)
  • Thread-Ersteller Ritchie

    (@ritchie-w)

    Hallo Zusammen,

    ich bin ein wenig weiter gekommen.
    Ich habe die function rewriterules_init()
    um die Zeile:

    
       add_rewrite_tag('%referenz%','([^/]*)');    
    

    erweitert.

    Ebenso habe ich eine Function:

    
    public function add_filtervariables($query_vars){
            $query_vars[] = 'productid';
            $query_vars[] = 'referenz';
        
        return $query_vars;        
        }
    

    angelegt, welche über

    
    $this->loader->add_filter( 'query_vars', $plugin_public, 'add_filtervariables', 0 );  /*  for the rewrite rules needed */		
    

    registiert wird.

    Innerhalb meiner Routine „product_redirect()“

    
            $product_query = get_query_var( 'productid' );
            $referenz_query = get_query_var( 'referenz' );
    

    kommen nur leere Variablen zurück. Geprüft mittels

    
            if( ! empty( $product_query ) ){
    

    Die Funktion selber wird aber aufgerufen.

    Edit:
    ich habe auch schon mal das Plugin Deaktiviert und wieder aktiviert.
    Keine Änderung.

    Kennt jemand diesen Effekt ? Was mache ich noch falsch.
    R.

    • Diese Antwort wurde geändert vor 1 Monat, 2 Wochen von Ritchie.
    • Diese Antwort wurde geändert vor 1 Monat, 2 Wochen von Ritchie.
Ansicht von 1 Antwort (von insgesamt 1)