본문 바로가기

WordPress/Plugin with FORM

WordPress Plugin with FORM example

워드프레스 플러그인 안에서 폼을 보여주고 폼 데이터를 처리하는 예



개요

워드프레스에서 개발자가 플러그인을 작성할 때 입력폼과 폼 데이터 처리를 위한 로직을 플러그인에 포함하도록 하는 절차를 알아보고자 한다

플러그인을 작성하여 Shortcode를 웹페이지에 포함하면 화면에 폼이 출력되고 그 폼을 전송하면 동일 플러그인에서 폼 데이터를 처리하는 예제를 작성하려고 한다. 폼을 전송할 때 히든필드에 액션후크의 이름을 전달하면 서버측에서 do_action('액션후크이름') 를 호출하여 플러그인 내의 액션함수를 실행할 수 있다. 그러므로 한개의 플러그인 안에 폼을 보여주고 또 폼 데이터를 처리하는 기능까지 모두 내장할 수 있다



테스트 환경

Autoset 9

WordPress 4.4



Shortcode 함수는 폼을 출력하고 Action 함수는 폼을 처리하는 기능을 수행하도록 플러그인을 작성하다

<?php
/*
Plugin Name: My Form Processing Plugin
Plugin URI: http://micropilot.tistory.com
Description: 폼을 출력/전송/처리/응답 플러그인 Shortcode : [my_most_simple_form]
Version: 1.0
Author: Kim Chang Woon
Author URI: http://micropilot.tistory.com
*/
/**
폼을 작성할 때 폼의 action 속성에 'admin-post.php'를 지정하고
hidden 필드에 name='action' value='aaaa-bbbb' 을 설정하여 액션후크의 이름을 전달하면
admin-post.php 에서는 이들의 값들을 결합하여 do_action('admin_post_aaaa_bbbb')
을 호출하므로 요청에 따라서 동적으로 액션함수를 호출할 수 있다
*/
function show_simple_form($atts) {
echo "<form action='".get_admin_url()."admin-post.php' method='post'>";
echo "<input type='hidden' name='action' value='submit-form' />";
echo "<input type='text' name='msg' value='사랑합니다' />";
echo "<button type='submit'>전 송</button>";
echo "</form>";
}
 
//[my_most_simple_plugin] 라는 Shortcode 를 사용하는 페이지에 폼이 출력된다
add_shortcode('my_most_simple_form', 'show_simple_form');


add_action('admin_post_submit-form', 'my_handle_form_action'); // If the user is logged in
add_action('admin_post_nopriv_submit-form', 'my_handle_form_action'); // If the user in not logged in

function my_handle_form_action(){
echo $_POST['msg'];	

//header('Location: http://localhost/wordpress/result');
}

?>