wp_redirect non funziona dopo aver inviato il modulo
-
-
Difficileindovinare qualcosa da questeinformazioni,haiprovato aeseguirneil debugpermaggiori dettagli?[Better HTTP Redirects] (http://wordpress.org/extend/plugins/better-http-redirects/) è un ottimo strumentoperesaminarei problemi di reindirizzamento.Hard to guess anything from this information, have you tried to debug it for more details? [Better HTTP Redirects](http://wordpress.org/extend/plugins/better-http-redirects/) plugin is good tool to look into redirect issues.
- 2
- 2012-12-22
- Rarst
-
Inserisci questo codicenel contesto.Please post this code in context.
- 0
- 2012-12-22
- s_ha_dum
-
@s_ha_dum Ho aggiornato lamia domandaperincludere unpastebin@s_ha_dum I've updated my question to include a pastebin
- 0
- 2012-12-22
- Anagio
-
@ Rarst ho aggiornato la domanda con unpastebin dell'intero codice@Rarst I've updated the question with a pastebin of the entire code
- 0
- 2012-12-22
- Anagio
-
@ Laprima volta che hoinstallatoilplug-in,guardailmiopost aggiornato,mostra un 302e si collega alnuovopostmanon si aggiorna lì@Rarst I installed the plugin please see my updated post it displays a 302 and links to the new post but doesn't refresh there
- 0
- 2012-12-22
- Anagio
-
2 risposta
- voti
-
- 2012-12-22
Puoi utilizzare solo
wp_redirect
prima cheil contenuto vengainviato albrowser. Se dovessi abilitareil debugphp vedresti unerrore di "intestazionigiàinviate" dovuto aget_header()
nellaprima riga.Invece dielaborareilmodulonelmodello,puoi associare un'azioneprecedente ,come
wp_loaded
e salva alcune querynel db se haiintenzione di reindirizzare.MODIFICA ,esempio-
add_action( 'wp_loaded', 'wpa76991_process_form' ); function wpa76991_process_form(){ if( isset( $_POST['my_form_widget'] ) ): // process form, and then wp_redirect( get_permalink( $pid ) ); exit(); endif; }
Utilizzando un'azione,puoimantenereil codicefuorie separato daituoimodelli. Combina questo con uno shortcodepergenerareilmoduloe racchiudiloin una classeper salvare lo statotraelaborazione/output,e potrestifaretutto senzatoccarei modelli difront-end.
You can only use
wp_redirect
before content is sent to the browser. If you were to enable php debugging you'd see a "headers already sent" error due toget_header()
on the first line.Rather than process the form in the template, you can hook an earlier action, like
wp_loaded
, and save some queries to the db if you're just going to redirect away.EDIT, example-
add_action( 'wp_loaded', 'wpa76991_process_form' ); function wpa76991_process_form(){ if( isset( $_POST['my_form_widget'] ) ): // process form, and then wp_redirect( get_permalink( $pid ) ); exit(); endif; }
Using an action, you can keep the code out of and separated from your templates. Combine this with a shortcode to output the form and wrap it all in a class to save state between processing/output, and you could do it all without touching the front end templates.
-
@Miloe sì,ho appena visto leintestazionigiàinviate almessaggio ora conil debug abilitatoe ilmigliorplug-in di reindirizzamento http attivo.Non hofamiliarità con come usaregli hook,puoiindicarmi qualchetutorial omostrare un codice diesempioperfavore@Miloe yes I just saw the headers already sent message now with debugging enabled and the better http redirect plugin on. I'm not familiar with how to use the hooks, can you point me to some tutorial or show some example code please
- 0
- 2012-12-22
- Anagio
-
@Anagio - aggiunto unesempio@Anagio - added an example
- 0
- 2012-12-22
- Milo
-
Grazie,quindiiltuo suggerimento diinserireilmoduloin un codicebreve,quindi utilizzare do_shortcode () all'interno delmodelloper visualizzareilmodulo.L'hook andrebbenelmiofunctions.php.Cosa diventa l'azione dellaformaper attivare lafunzione/hook?Thanks, so your suggesting I put the form into a short code then use do_shortcode() within the template to display the form. The hook would go into my functions.php. What does the action of the form become to fire the function/hook?
- 0
- 2012-12-23
- Anagio
-
non dovresti usare `do_shortcode`,ilmiopuntoera chepotresti aggiungerlotramite uno shortcode al contenuto di unpost/pagina,quindituttoil codice dielaborazionee rendering è separato dalmodello,in questomodoilmodulopotrebbefunzionare su qualsiasipaginain cuiinserisci lo shortcode delmodulonel contenuto di.l'azionepuò soloindirizzare lapagina corrente con un "#",oessere vuota,poiché stai agganciando *tutte * le richiesteper verificare seiltuomodulo è statoinviato,funzionerà da/a qualsiasipagina.you wouldn't have to use `do_shortcode`, my point was that you could add it via a shortcode to a post/page's content, then all your processing and rendering code is separated from the template, that way the form could work on any page you place the form's shortcode within the content of. the action can just target the current page with a `#`, or be blank, since you're hooking *all* requests to check if your form was submitted, it will work from/to any page.
- 1
- 2012-12-23
- Milo
-
@Milo haiinchiodato questoperme."intestazionigiàinviate"erailproblemaperme.Grazie@Milo you nailed this for me. "headers already sent" was the problem for me. Thanks
- 0
- 2013-09-24
- henrywright
-
- 2012-12-22
Spostare
get_header();
in fondo a quel codice dovrebbe risolvereilproblema.Iltuo codice verràeseguitoprima dell'invio di qualsiasiintestazionee il reindirizzamentofunzionerà.// ... wp_redirect( get_permalink($pid) ); exit(); //insert taxonomies } get_header(); ?>
Presumo ci siapiù codicenellapagina sotto quello che haipubblicato?In caso contrario,non vedo affatto lanecessità di
get_header()
.L'unico vantaggio cheposso vederenell'usare un hook come suggerisce Milo è chepotrestiesserein grado dievitare unpo 'di overhead se scegli un hook abbastanzapresto.Potresti ridurre di unafrazione di secondo l'elaborazione.
Moving
get_header();
to the bottom of that code should fix the problem. Your code will execute before any headers are sent and the redirect will work.// ... wp_redirect( get_permalink($pid) ); exit(); //insert taxonomies } get_header(); ?>
I assume there is more code on the page below what you posted? If not I don't see the need for
get_header()
at all.The only benefit I can see to using a hook as Milo suggests is that you might be able to avoid some overhead if you pick an early enough hook. You could shave a fraction of a second off of processing.
-
Sì,c'è dell'HTMLe altrefunzioni wpget_sidebars ()e get_footer ()ecc. Non hofamiliarità con l'uso degli hook,mami piacerebbe davvero vedere unesempio.Stogià cercando su Googlee vedopersone cheparlano di `add_action ('wp_loaded','your_function')`ma davveronon sono sicuro di come usarlo.Eventualiesempi sono apprezzatigrazieYes there's some HTML, and some more wp functions get_sidebars(), and get_footer() etc. I'm not at all familiar with using hooks but would really like to see an example. I'm already googling and see people talking about `add_action('wp_loaded', 'your_function')` but really not sure how to use it. Any examples is appreciated thanks
- 0
- 2012-12-22
- Anagio
-
Aspetterò unpo 'e vedrò se @Milopubblica unesempio usando un hook,poiché questa è la sua risposta.In caso contrario,modifico lamia risposta.I'll wait awhile and see if @Milo posts an example using a hook, since that is his answer. If not, I'll edit my answer.
- 0
- 2012-12-22
- s_ha_dum
-
Grazie spostandoget_header () sottoil codice digestione delmoduloe il reindirizzamento hafunzionato.Mipiacerebbe vedere come usareilgancioperò.Thanks moving the get_header() below the form handling code and redirect worked. I would like to see how to use the hook though.
- 0
- 2012-12-22
- Anagio
-
@s_ha_dum quel suggerimento è unpezzo di diamantein pocheparole.:) Ha spiegatotutto.Hoprovatomoltimodi -tutte le cose `wp_loaded`,`template_redirect`,manon sono riuscito afarfunzionare le cose.Moltegrazie.@s_ha_dum that piece of suggestion is a piece of diamond in a nutshell. :) It explained everything. I tried a lots of ways - all the `wp_loaded`, `template_redirect` things, but could not make things work. Thanks a lot.
- 0
- 2015-04-27
- Mayeenul Islam
Sto utilizzando questo reindirizzamento dopo averinserito unpost.Nonfunziona,aggiorna solo lapaginain cui sitrovailmodulo.So che $pid sta ottenendo l'ID delpost,quindi qual èilproblema?Questa è lafine delmio codicephpper lagestione dell'invio delmodulo.
Ecco un pastebin del codice completo
Utilizzandomigliori reindirizzamenti HTTP,il suo output èe collega laparola
here
alpost appenapubblicato corretto.