양식 제출을 처리하는 방법?


13

저는 워드 프레스를 처음 사용하기 때문에 몇 가지 문제에 직면했습니다.

유스 케이스 시나리오는 다음과 같습니다.

  1. 학교에서 클럽을 시작하기위한 신청서가 사용자에게 표시됩니다.
  2. 사용자가 양식을 작성하고 '제출'버튼을 누르십시오.
  3. 양식을 확인해야합니다.
  4. 유효성 검사에 성공하면 데이터가 club_detailsdb의 사용자 정의 테이블 에 저장되고 사용자에게 몇 가지 메시지가 표시됩니다 (예 : 제출해 주셔서 감사합니다. 승인을 위해 응용 프로그램이 관리자에게 전송됩니다). 그렇지 않으면 적절한 오류 메시지가 사용자에게 표시됩니다.
  5. 관리자는 Wordpress 관리자 패널로 이동하여 클럽에 대한 보류중인 요청을 승인합니다. (데이터는 db에서 가져 와서 관리자에게 표시됩니다).

나는 다음을 수행했다.

  • for 1) Wordpress HTML 편집기를 사용하여 신청서 / 페이지를 작성했습니다.
  • 3) validation.js유효성 검사 코드 가있는 자바 스크립트 파일 ( )이 있습니다.
  • 4) 응용 프로그램 세부 정보를 db의 사용자 정의 테이블에 저장 club-functions.php하는 기능 이있는 PHP 파일 ( )이 있습니다 storeInDB().
  • 5) 내 플러그인 폴더를 만들고 club.phpWordpress 관리자 패널에서 관리자에게 응용 프로그램 세부 정보를 표시 하는 PHP 파일 ( )을 추가했습니다 .

양식 제출을 처리하는 방법은 다음과 같습니다. javascript의 validate 함수를 호출하고 나중에 함수를 호출하는 코드를 어디에 배치해야합니까 storeInDB()?

어떻게하면 좋을지에 대한 제안을 해주시고이 방법이 좋은가요? 많은 감사드립니다.

답변:


13

wp_ajax또는 wp_ajax_nopriv기능을 사용해야합니다 .

우선, 관리자 ajax url을 제출 양식의 action 속성 값으로 넣어야합니다.

<form id="" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" class="form" >

그렇게하면 폼이 기본적으로 admin-ajax.php에 제출됩니다 (JavaScript없이). JavaScript를 사용하여 AJAX를 사용하여 작동하게 할 수 있습니다.

다음은 제출 된 데이터를 사용할 함수입니다. 양식 안에 wp_nonce_field이름 작업과 함께 숨겨진 입력을 넣습니다 . 내 행동 가치는 add_transfer입니다.

<?php wp_nonce_field('add_transfer','security-code-here'); ?>
<input name="action" value="add_transfer" type="hidden">

이 양식을 처리 할 함수를 functions.php 또는 플러그인 파일에 넣을 수 있습니다. wp_ajax_조치 이름이 로그인 한 사용자에게만 해당되는 경우 + 조치 이름을 사용할 수 있습니다 . 로그인하지 않은 사용자의 경우 wp_ajax_nopriv+ 작업 이름을 대신 사용하십시오.

add_action('wp_ajax_add_transfer', 'process_add_transfer');

function process_add_transfer() {
if ( empty($_POST) || !wp_verify_nonce($_POST['security-code-here'],'add_transfer') ) {
    echo 'You targeted the right function, but sorry, your nonce did not verify.';
    die();
} else {
    // do your function here 
    wp_redirect($redirect_url_for_non_ajax_request);
}

답장을 보내 주셔서 감사합니다. 'Wordpress HTML 편집기'에서 양식을 작성 중입니다. 그래서 내가 과잉이라고 생각하는 'Exec-PHP'플러그인을 설치해야하므로 PHP 코드를 양식에 포함시키는 것이 좋습니까? 당신의 생각을 공유하십시오.
Pooja

액션 값을 your-site-url.com/wp-admin/admin-ajax.php로 바꾸십시오 .
ifdion

작동합니까?
ifdion

1
admin-ajax.php없이 동일하게 달성 할 수있는 좋은 방법이 있습니까?
Tahir Yasin

1
@TheWPNovice 나는 그것이 여전히 /wp-admin/디렉토리 에 있다고 생각합니다 . 해당 파일을 변경하거나 추가 할 필요가 없습니다.
ifdion

2

먼저 자바 스크립트 유효성 검사가 클라이언트 쪽에서 작동한다고 알려 드리겠습니다. 따라서 사용자가 js를 비활성화하면 문제가 발생합니다.

따라서 서버 측에서도 입력 값의 유효성을 검사해야합니다.

그것을 염두에두고 :

js 코드는 양식이있는 페이지에서 직접 호출 할 수 있습니다. onsubmit 속성은 일반적인 호출 방법입니다.

<form onSubmit="validateForms()" method="post" action="domain.com/club-contacts">
    <label for="app_email">Application</label>
    <input type="text" name="app_email" id="app_email" value="" />
    <input type="hidden" name="app_application" value="1" />
    <input type="submit" name="app_form_send" value="Send" />
</form>

page.php

이것은 또한 커스텀 템플릿 페이지 또는 single.php 일 수 있습니다. 이 경우 99는 승인되었거나 오류가있는 경우 사용자에게 표시하려는 특정 페이지의 ID입니다.

if ( get_the_ID() == '99' ) {
  // lets validate the input
  if( !empty($_POST['app_application']) && $_POST['app_application'] == "1"  ) {
   if(!empty($_POST['app_email'])) {
    // check the codex for [Data_Validation][1]
    }
  }
}

답장을 보내 주셔서 감사합니다. 양식 데이터를 추가로 처리하기 위해 PHP 코드를 어디에서 호출 할 수 있습니까?
Pooja

action 속성은 파일을 가리 킵니다. 해당 파일에서 양식을 필터링하고 확인할 수 있습니다. 나는 그것을 포함하기 위해 응답을 업데이트 할 것입니다.
pcarvalho
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.