Riscrivi la regola per la home page che non funziona correttamente

Sto cercando di impostare le regole di riscrittura per una home page personalizzata perché stiamo pianificando di utilizzare le diapositive a schermo intero e utilizzando un pushstate javascript per aggiornare l’URL invece di utilizzare le pagine formali di WordPress. Abbiamo deciso di utilizzare le variabili GET per semplificare il collegamento a una determinata diapositiva sulla home page, ma non è bello, quindi volevo utilizzare le regole di riscrittura per rendere tutto più fluido e SEO friendly.

Ecco alcuni esempi di ciò che stiamo cercando di fare (“slide” non è una pagina / post in WP):

Nice URL: example.com/slide/something/ Ugly URL: example.com/?slide=something Nice URL: example.com/slide/videos/ Ugly URL: example.com/?slide=videos 

Ora, non abbiamo alcun problema con i brutti URL, ma la mia regola di riscrittura per questo non funziona. Ho risposto a diverse domande / risposte, ma nessuna delle risposte accettate ha funzionato. Ecco cosa ho in functions.php:

 add_action('init', 'add_rewrite_rules'); function add_rewrite_rules() { flush_rewrite_rules(); add_rewrite_rule( '^slide/([^/]*)/?$', 'index.php?slide=$matches[1]', 'top' ); } 

Sto svuotando le regole di riscrittura mentre cerco di farlo funzionare; Mi rendo conto che non dovrei avere questo in là, essere chiamato su ogni aggiornamento se questo fosse un sito di produzione.

Se provo ad andare su example.com/slide/something/ vengo reindirizzato alla homepage.

Solutions Collecting From Web of "Riscrivi la regola per la home page che non funziona correttamente"

Due problemi che vedo: le regole di riscrittura devono impostare query vars che si traducono in una query principale corretta. L’impostazione di una var personalizzata come la slide non analizza nulla che WordPress possa caricare. Inoltre, è necessario aggiungere la slide alla query vars riconosciuta affinché venga analizzata in una regola.

Quindi, come sarebbe una regola che caricasse i messaggi della prima pagina nella query principale? Questa è una buona domanda: la pagina dei post è un caso speciale, l’assenza di altre query vars. Non ho trovato un modo per farlo con una regola, sebbene possa esistere.

Un modo più semplice per farlo è con un endpoint di riscrittura:

 function wpd_slide_endpoint(){ add_rewrite_endpoint( 'slide', EP_ROOT ); } add_action( 'init', 'wpd_slide_endpoint' ); 

Tieni presente che se hai codici che accedono ai valori tramite $_GET , questo non funzionerà, perché WordPress non mette query vars lì quando le regole vengono analizzate. Puoi cambiare il codice per usare get_query_var , o semplicemente assegnarlo prima che il codice provi ad accedervi:

 $_GET['slide'] = get_query_var('slide'); 

@Milo è stato due minuti più veloce, quindi aggiungerò alla sua risposta che usare un CPT per le diapositive potrebbe essere il modo più semplice per ottenere degli URL per le diapositive, e inoltre sarà molto più facile fare le diapositive SEO.