it-swarm.com.de

Wie werden die Standard-Umschreiberegeln dauerhaft aus der Tabelle wp_options entfernt?

In unserer Tabelle wp_options sind unzählige Umschreiberegeln gespeichert. Ich möchte alle Einträge, die wir auf unserer Site nicht verwenden (z. B. Kommentar-Feeds, Seitenanhänge usw.), dauerhaft entfernen.

Wie können Sie diese Regeln am besten löschen und verhindern, dass sie beim nächsten Aufruf von flush_rules () in der Datenbank gespeichert werden? Ich würde eine Lösung vorziehen, die in functions.php oder als eigenständiges Plugin funktioniert, anstatt WP Kerndateien wie wp-includes/rewrite.php zu bearbeiten.

3
Andres Lucero

Anstatt gespeicherte Regeln zu ändern, ist es zuverlässiger, Regeln zu ändern, bevor sie gespeichert werden.

  • flush_rewrite_rules() ruft auf
  • WP_Rewrite->flush_rules()
  • WP_Rewrite->wp_rewrite_rules()
  • WP_Rewrite->rewrite_rules()

Im letzten Bereich gibt es passende Haken, um Regeln zu ändern (danach werden sie bei jedem Flush wie gewohnt gespeichert):

do_action_ref_array('generate_rewrite_rules', array(&$this));
$this->rules = apply_filters('rewrite_rules_array', $this->rules);
2
Rarst

Um zu tun, was Sie wollen, müssen Sie für jede Regel, die Sie haben, eine eigene Regel hinzufügen. Ich speichere neue Regeln, die Benutzer einem Optionsarray hinzufügen. Wenn der Benutzer die Regel löschen möchte, habe ich sie nach der Auswahl aus dem Array entfernt.

function remove_rule($user_input){
    foreach($rules as $key => $rule){
        if($rule === $user_input){
            unset($rules[$key]);
        }
    }
    return $rules;
}

Stellen Sie dann Ihren htaccess wieder her, indem Sie alle gespeicherten Regeln hinzufügen

foreach($rules as $rule){
    add_rewrite_rule($rule['pattern'], $rule['url'], 'top');
}

Hoffe das hilft jedem, der es braucht.

0
Andres Abello