2013-09-21 2 views
3

사용자 정의 게시물을 만드는 중력 양식이 있으며, 현재 제출시 양식 설정에 따라 확인 메시지가 표시됩니다.제출시 중력 양식이 방금 생성 된 게시물

확인 메시지를 표시하는 대신 양식을 방금 만든 게시물로 리디렉션하고 싶습니다.

중력 양식 필터, gform_confirmation을 가지고 (또는 특정 양식을 대상으로 [form_id] gform_confirmation_)과 같이 작동한다 :

<?php 
add_filter('gform_confirmation', 'reroute_confirmation', 10, 4); 
function reroute_confirmation($form, $lead, $confirmation, $ajax) { 
    $confirmation = array('redirect' => 'http://target_url.com'); 
    return $confirmation; 
} ?> 

내 문제는 내가 URL이 것 때문에 무엇인지 몰라 양식에 의해 생성 된 맞춤 게시물의 슬러그에 의해 결정됩니다.

$ lead와 $ form의 var_dump를 사용하여 새 게시물 ID를 말했는지 확인했지만 시도하지 않았습니다.

gform_entry_post_save 필터를 사용해도 동일한 시도를했지만 기쁨이 없었습니다.

나는이 게시물 ID (또는 슬러그)를 공개 할 것이라고 추측하고있다. 리다이렉트하기 위해 gform_confirmation 필터를 사용하기 위해 작업 할 수있다. 나는 올바른 것을 찾을 수 없다.

답변

6

후크 "gform_after_submission"에는 post_id를 포함하여 새로 생성 된 게시물의 세부 정보가 들어있는 $ entry 개체가 있습니다.

그래서 post_id로 무장 한 다음 리디렉션 할 수 있습니다.

<?php 
add_action('gform_after_submission', 'redirect_on_post', 10, 2); 
function redirect_on_post($entry, $form) { 
    $post_id = $entry['post_id']; 
    $post_name = get_permalink('$post_id'); 
    wp_redirect($post_name); 
    exit; 
} 
0

귀하의 솔루션이 실제로 나를 위해 작동하지 않았다 (양식 단지 내가 제출 한 후 거기에 앉아 듯 - 페이지가 전혀 변경되지 않았고 작은이 "기다려주십시오"애니메이션이 영원히가는 유지). 나는 그것이 AJAX와 관련이 있다고 생각하는데, 나는 이해하지 못한다. :)

gform_confirmation 액션 안에 실제로 $ entry 대신 $ lead 배열을 제외한 게시물 ID에 대한 액세스 권한이 있습니다. 할 수있는 작업은 다음과 같습니다.

function my_gform_confirmation($confirmation, $form, $lead, $ajax){ 
$pid = $lead['post_id']; 
$confirmation = array("redirect" => get_site_url() . "/?p=$pid"); 
return $confirmation; 
} 

이렇게하면 사용자가 원래 게시물로 돌아갑니다. 퍼머 링크 주소가 길어도 위 내용은 올바른 게시물로 리디렉션됩니다. 그것을 전체 링크로 풀 필요가 없습니다.