Generieren einer Rewrite-Regel für bestimmte Post-Requests von einem übermittelten Formular?

Ich habe ein Formular (Methodenpost), das es ermöglicht, meine Beiträge nach bestimmten Kriterien zu filtern, zB “Neueste”, “Diese Woche”, “Letzte Woche”, …

Es funktioniert gut, aber natürlich ist die URL für jede Anfrage gleich. Ich möchte die send-Methode nicht in GET ändern und die URL mit diesem Trick ändern. Ich suche nach einer Lösung, bei der ich eine Rewrite-Regel zu den bestehenden hinzufügen kann, die es ermöglichen würde, “dynamische” URLs zu haben

http://myurl.com/most-recent
http://myurl.com/last-week
http://myurl.com/category-1/most-recent
http://myurl.com/category-1/last-week

Die Rewrite-Regel, die nach den Wörtern “neueste”, “letzte Woche”, … am Ende der URL sucht, entfernt diese und kehrt dann zu den normalen Umschreibungsregeln zurück. Diese prodefinierte Post-Anfrage würde also für Kategorien, Seiten, Posts, … funktionieren.

Ich hoffe, ihr versteht was ich meine!

Solutions Collecting From Web of "Generieren einer Rewrite-Regel für bestimmte Post-Requests von einem übermittelten Formular?"

Ich kann mir vorstellen, dass das nicht zu schwierig wäre. Unter der Annahme, dass die Anzahl der benutzerdefinierten dynamischen URLs bekannt ist, sollte dies der Fall sein:

foreach ( array( 'most-recent','last-week','category-1/most-recent','category-1/last-week') as $page ) add_rewrite_rule( "$page/?$", 'index.php', 'top' ); 

Was dies bewirkt, sagt WordPress “Immer wenn Sie eine URL-Struktur haben, die mit X übereinstimmt, behandeln Sie sie so, als ob die URL nur site.com/index.php wäre, und überprüfen Sie diese Regel vor allem anderen.” WordPress wird es behandeln, als ob es die Homepage ist, aber sendet auch die $_POST Informationen aus dem Formular und erhält die richtigen Informationen.

Dieses erste Argument ist ein regulärer Ausdruck, daher ist es möglicherweise keine schlechte Idee, jedes Element zuvor über preg_quote() .

Hoffe das hat geholfen!

BEARBEITEN

Ich würde dringend davon abraten, für diese Operation irgendeine Art von regulären Platzhalterausdruck zu verwenden. Andernfalls werden die Seiten mit dieser Regel übereinstimmen.

Denken Sie für unsere Zwecke, dass diese Strukturen Positionen haben, getrennt durch / . Zum Beispiel würde in category-1/most-recent Position 1 category-1 und Position 2 die most-recent . Also, für alle Strukturen ein Array für jede Position mit allen Strings, die in diese Position gehen könnten. Sie könnten also so etwas haben:

 $timing = array( 'most-recent', 'last-week', ); $cats = array( 'category-1', 'category-2', 'category-3' ); $timing = array_map( 'preg_quote', $timing ); $timing = implode( '|', $timing ); $cats = array_map( 'preg_quote', $cats ); $cats = implode( '|', $cats ); add_rewrite_rule( "($timing)/?$", 'index.php', 'top' ); add_rewrite_rule( "($cats)/($timing)/?$", 'index.php', 'top' ); 

Ich habe Stunden damit verbracht, genau das zu versuchen, was Sie geschrieben haben, und obwohl ich angefangen habe zu googeln und zu recherchieren … funktioniert es einfach nicht. Ich habe zwar eine kleine functon geschrieben, die die Umschreiberegeln im Admin zeigt. Ich machte einen Screenshot und befestigte es und obwohl einige Link. Wäre toll wenn du oder jemand eine Lösung oder Idee hat ….

Hier ist ein Link, der funktionieren sollte. Ich überlasse die Kategorien, um es ein wenig zu vereinfachen.

http: //localhost/myurl.com/summarizes/interviews/from-this-week

Ich darf keinen Screenshot anhängen, das ist die Regel, die hinzugefügt wird

(von-dieser-Woche | von-diesem-Monat | seit-big-bang) /? $ index.php (fasst / Interviews) / (von-dieser-Woche | von-diesem-Monat | seit-big-bang) /? $ index.php