태그 보관물: forms

forms

플러그인 양식 제출 모범 사례 제출과 다르지 않지만 혼란스럽게하는

나는 많은 연구를 해왔고 내가 찾고있는 것을 찾지 못해서 올바른 방향을 가리킬 수 있기를 바라고 있습니다.

프론트 엔드에서 티켓을 예약 할 이벤트 플러그인을 개발 중입니다. 이것은 다른 양식 제출과 다르지 않지만 혼란스럽게하는 것은 클래스와 함께 OOP를 통해 작성된 플러그인에서 처리하는 방법입니다.

내가 찾은 대부분의 기사는 템플릿 페이지 내에 $ _POST 처리를한다고 말합니다. 이상적으로는 플러그인 내의 함수로 처리하고 싶습니다.

확실하지 않은 또 다른 사항은 프런트 엔드에서 양식을 제출할 때 실제로 백엔드의 함수에 전달되는 방식입니다. 템플릿 세부 정보에서 양식 처리를 완전히 추상화하기를 희망합니다.

// events.php
if ( ! class_exists( 'Events' ) ) {

    Class Events {
        function __construct() {
            add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 );
        }

        function includes() {
            require_once( EVENTS_INCLUDES . 'functions.php' );
        }
    }
}

if ( class_exists( 'Events' ) ) {
    $events_load = New Events();
}


// functions.php
function process_form() {
    ...do form processing here...

    ...insert booking...
}

무엇에 연결 해야하는지 또는 양식 작업을 보낼 위치를 잘 모르겠습니다. 모든 도움을 주셔서 감사합니다!

-아담



답변

양식 조치를 홈페이지 또는 특정 페이지 URL로 보내십시오. 프로세스 후에 리디렉션해야하고 HTML 출력 전에 리디렉션을 시작해야하므로 템플릿 내에서 $ _POST 처리를 할 수 없습니다.

// you should choose the appropriate tag here
// template_redirect is fired just before any html output
// see - http://codex.wordpress.org/Plugin_API/Action_Reference
add_action('template_redirect', 'check_for_event_submissions');

function check_for_event_submissions(){
  if(isset($_POST['event'])) // && (get_query_var('pagename') === 'events) 
    {
       // process your data here, you'll use wp_insert_post() I assume

       wp_redirect($_POST['redirect_url']); // add a hidden input with get_permalink()
       die();
    }

}

데이터가 올바른 장소에서 제출되었는지 확인하기 위해 nonce 를 확인할 수도 있습니다 …


답변