나는 많은 연구를 해왔고 내가 찾고있는 것을 찾지 못해서 올바른 방향을 가리킬 수 있기를 바라고 있습니다.
프론트 엔드에서 티켓을 예약 할 이벤트 플러그인을 개발 중입니다. 이것은 다른 양식 제출과 다르지 않지만 혼란스럽게하는 것은 클래스와 함께 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 를 확인할 수도 있습니다 …