양식 제출 후 wp_redirect가 작동하지 않음
-
-
이 정보에서 어떤 것도 추측하기 어렵습니다. 자세한 내용을 위해 디버그를 시도 했습니까?[더 나은 HTTP 리디렉션] (http://wordpress.org/extend/plugins/better-http-redirects/) 플러그인은 리디렉션 문제를 조사하는 데 좋은 도구입니다.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
-
이 코드를 컨텍스트에 게시하십시오.Please post this code in context.
- 0
- 2012-12-22
- s_ha_dum
-
@s_ha_dumpastebin을 포함하도록 질문을 업데이트했습니다.@s_ha_dum I've updated my question to include a pastebin
- 0
- 2012-12-22
- Anagio
-
@Rarst 전체 코드의pastebin으로 질문을 업데이트했습니다.@Rarst I've updated the question with a pastebin of the entire code
- 0
- 2012-12-22
- Anagio
-
@Rarst 플러그인을 설치했습니다. 업데이트 된 게시물에 302가 표시되고 새 게시물에 대한 링크가 표시되지만 새로 고침되지 않습니다.@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 대답
- 투표
-
- 2012-12-22
콘텐츠가 브라우저로 전송되기 전
wp_redirect
만 사용할 수 있습니다. PHP 디버깅을 활성화하면 첫 번째 줄에get_header ()
로 인해 "headers already sent"오류가 표시됩니다.템플릿에서 양식을 처리하는 대신
wp_loaded 와 같은 이전 작업을 연결할 수 있습니다 . code>를 사용하고 리디렉션하려는 경우 일부 쿼리를 db에 저장합니다.
수정 ,예-
add_action ( 'wp_loaded','wpa76991_process_form'); function wpa76991_process_form () { if (isset ($ _POST [ 'my_form_widget'])) : //양식을 처리 한 다음 wp_redirect (get_permalink ($pid)); 출구(); endif; }
액션을 사용하면 코드를 템플릿과 분리 할 수 있습니다. 이것을 단축 코드와 결합하여 양식을 출력하고 클래스에 모두 래핑하여 처리/출력 사이의 상태를 저장하면 프런트 엔드 템플릿을 건드리지 않고도 모든 작업을 수행 할 수 있습니다.
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 yes 방금 디버깅이 활성화되고 더 나은 http 리디렉션 플러그인이 설정된 상태에서 헤더가 이미 메시지를 보냈습니다.후크 사용법에 익숙하지 않습니다. 튜토리얼을 알려 주시거나 예제 코드를 보여 주시겠습니까?@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-예제 추가@Anagio - added an example
- 0
- 2012-12-22
- Milo
-
감사합니다. 양식을 짧은 코드에 넣은 다음 템플릿 내에서 do_shortcode ()를 사용하여 양식을 표시하도록 제안했습니다.후크는 내functions.php로 이동합니다.함수/후크를 시작하기 위해 양식의 동작은 무엇입니까?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
-
'do_shortcode'를 사용할 필요가 없습니다. 내 요점은 단축 코드를 통해 게시물/페이지의 콘텐츠에 추가 할 수 있다는 것입니다. 그러면 모든 처리 및 렌더링 코드가 템플릿에서 분리되어 양식이 모든 작업에서 작동 할 수 있습니다.콘텐츠 내에 양식의 단축 코드를 넣는 페이지.작업은 현재 페이지를 '#'으로 타겟팅하거나 비어있을 수 있습니다. 양식이 제출되었는지 확인하기 위해 * 모든 * 요청을 연결하므로 모든 페이지에서/에서 작동합니다.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 당신이 나를 위해 이것을 못 박았습니다."이미 보낸 헤더"가 문제였습니다.감사@Milo you nailed this for me. "headers already sent" was the problem for me. Thanks
- 0
- 2013-09-24
- henrywright
-
- 2012-12-22
get_header ();
를 해당 코드의 맨 아래로 이동하면 문제가 해결됩니다.헤더가 전송되기 전에 코드가 실행되고 리디렉션이 작동합니다.게시 한 내용 아래 페이지에 더 많은 코드가있는 것 같습니다.그렇지 않다면
get_header ()
의 필요성을 전혀 알지 못합니다.Milo가 제안한대로 후크를 사용할 때 얻을 수있는 유일한 이점은 초기에 후크를 선택하면 약간의 오버 헤드를 피할 수 있다는 것입니다.처리 시간을 1 초도 단축 할 수 있습니다.
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.
-
예,일부 HTML과 더 많은 wp 함수get_sidebars () 및get_footer () 등이 있습니다. 저는 후크 사용에 전혀 익숙하지 않지만 예제를보고 싶습니다.나는 이미 인터넷 검색 중이며 사람들이`add_action ( 'wp_loaded','your_function')`에 대해 이야기하는 것을 보았지만 실제로 사용 방법을 모르겠습니다.모든 예를 감사합니다.Yes 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
-
잠시 기다렸다가 @Milo가 후크를 사용하여 예제를 게시하는지 확인하겠습니다.그렇지 않은 경우 내 답변을 수정하겠습니다.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
-
get_header ()를 양식 처리 코드 아래로 이동하고 리디렉션이 작동했습니다.그래도 후크를 사용하는 방법을보고 싶습니다.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 그 제안 조각은 간단히 말해서 다이아몬드 조각입니다.:) 모든 것을 설명했습니다.나는 많은 방법을 시도했다-모든`wp_loaded`,`template_redirect` 일을 시도했지만 일을 작동시킬 수 없었다.감사합니다.@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
게시물을 삽입 한 후이 리디렉션을 사용하고 있습니다.작동하지 않고 양식이있는 페이지 만 새로 고칩니다.$pid가 게시물 ID를 받고 있다는 것을 알고 있으므로 문제는 무엇입니까?이것은 양식 제출을 처리하는 PHP 코드의 끝입니다.
다음은 전체 코드의 pastebin 입니다.
더 나은 HTTP 리디렉션을 사용하면 결과가 출력되며
here
라는 단어를 새로 게시 된 올바른 게시물에 연결합니다.