it-swarm.com.de

Benutzerdefinierte Umschreiberegeln senden alles an index.php

Ich erstelle eine Site, auf der Benutzer in Teams zusammenarbeiten, um Filme zu erstellen. Derzeit richte ich im Frontend eine Bearbeitungsseite für Teammanager ein. Ich habe gerade eine einfache isset () -Prüfung für eine Abfragevariable ohne Wert, um die Ansicht an die neue Vorlagenseite zu senden. Unabhängig vom Wert der Abfragevariable wird die neue Vorlage aufgerufen, wenn sie in der URL aufgerufen wird.

Dieser Teil funktioniert. Die Vorlage wird problemlos geladen unter/team/(teamname)? Manage . Und alles, was ich versuche, ist, es so umzuschreiben, dass es aussieht wie/team/(teamname)/manage stattdessen.

Aber mein Problem ist, dass es nicht funktioniert und jede Seite im Frontend jetzt auf index.php umleitet. Alle außer index.php? Team = blah & manage und anderen benutzerdefinierten Posts, die mit? Team = aufgerufen werden.

Hier ist meine Datei für benutzerdefinierte Umschreibregeln:

function generate_manage_rewrite_rules() {
    global $wp_rewrite;

    $new_rules = array(
        "(team|film)/([^/]+)/manage/?$" => "index.php?".$wp_rewrite->preg_index(1)."=".$wp_rewrite->preg_index(2)."&manage" 
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

add_filter('rewrite_rules_array', 'generate_manage_rewrite_rules');

Meine .htaccess-Datei, die ich nicht berührt habe:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /sitename/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /sitename/index.php [L]
</IfModule>

# END WordPress

Und meine Datei zum Festlegen von Vorlagenumleitungs- und Abfragevariablen (auch wenn ich nicht glaube, dass dies das Problem ist):

function templateInclude( $template )
{
    if (is_single()) {

        global $wp_query;

        if( isset ( $wp_query->query_vars['manage'] ) ) {

            if ( is_manager() ) {

                $new_template = locate_template( array( '/template-team-manage.php' ) );
                if ( '' != $new_template ) {
                    return $new_template ;
                }
            }
        }
    }

    return $template;
}
add_action( 'template_include', 'templateInclude' );

Ich habe auch versucht, das Rewrite Analyzer-Plugin zu installieren, um dies herauszufinden, aber es wird nach der Installation für mich überhaupt nicht geladen.

3
Aly

Endlich herausgefunden. 1) Ich habe die erste Funktion bei 'rewrite_rules_array' anstelle von 'init' aufgerufen, was einfach nur dumm war. 2) Es stimmte immer noch etwas nicht, aber ich erkundete einen anderen Bereich, der jetzt offensichtlich zu sein scheint, den ich aber ursprünglich beschönigte, weil es so schien.

https://codex.wordpress.org/Rewrite_API/add_rewrite_endpointhttps://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/

Machen Sie einfach einen Endpunkt. Wordpress verfügt bereits über die Funktionalität, um das zu tun, was ich versucht habe, aber ich habe drei Tage gebraucht, um es zu suchen.

Ich habe buchstäblich alles oben (außer .htaccess) ersetzt durch:

function manage_endpoint() {

    add_rewrite_endpoint( 'manage', EP_PERMALINK );

}
add_filter('init', 'manage_endpoint');
1
Aly