반응형
wordpress 플러그인의 다른 페이지로 양식을 제출하는 방법
다른 페이지에 폼을 제출하는 워드프레스 플러그인을 개발 중입니다.그러나 다른 페이지로 폼을 전송하려고 하면 해당 페이지에서 php 오류가 반환됩니다.제 폼 코드는 다음과 같습니다.
echo "<form action='".plugins_url()."/wp_voting_poll/frontend_poll_process.php' method='post'>";
echo "<input type='hidden' name='hide' value='$ques' />";
$total_vote_count = $wpdb->get_var( "SELECT COUNT(*) FROM $table_result WHERE question_uid='$ques'" );
if($ques!=""){
echo "<table>";
foreach($ans_data as $ans_res){
// $ans=$ans_res->answer;
$answer_id=$ans_res->id;
$type=$ans_res->answer_type;
$vote_count = $wpdb->get_var( "SELECT COUNT(*) FROM $table_result WHERE answer_id='$answer_id'" );
if($vote_count==0){
error_reporting(0);
}
$vote_percent=($vote_count*100)/$total_vote_count;
echo "<tr> <td>";
echo "<div class='answer_div'>";
if($type==1){
echo "<div class='input'><input type='radio' name='ans_name[]' value='$answer_id'/>".$ans_res->answer."<br/></div>";
}
elseif($type==0){
echo "<div class='input'><input type='checkbox' name='ans_name[]' value='$answer_id'/>".$ans_res->answer."<br/></div>";
}
if($backend==0){
echo "</td> <td>";
echo "<h4> total vote counted $vote_percent% </h4>";
// echo "<img src='$url' width='$width_img'/>";
$bar=$vote_percent*5.9;
echo "<img src='$url' height='10' width='$bar' />";
echo "</td></tr>";
}
}
echo "</table>";
echo "<input type='submit' value='Submit vote' />";
echo "</form>";
그리고 이것은 다른 페이지의 제 코드입니다.폼은 처리될 것입니다만, 안타깝게도 php 에러가 반환됩니다.
<?php
require_once("function_ip.php");
$vote_result=$_POST['ans_name'];
$uid=uniqid();
global $wpdb;
$table_vote=$wpdb->prefix."poll_answer_result";
$count=count($vote_result);
$hidden=$_POST['hide'];
$ans_data=$wpdb->get_results("SELECT * FROM $table_vote WHERE question_id='$hidden'" );
if($count>0){
foreach($vote_result as $vote_arr){
$wpdb->insert($table_vote,
array('answer_id' => $vote_arr,
'ip' =>get_client_ip(),
'question_uid' => $hidden
));
}
}
?>
Wordpress에는 모든 폼을 처리하는 범용 핸들러가 있습니다.admin-post.php
.
양식에 숨김 필드를 포함하는 경우:action
그 후 워드프레스의 장점을 모두 포함하여 원하는 기능에 접속할 수 있습니다.
echo "<form action='".get_admin_url()."admin-post.php' method='post'>";
echo "<input type='hidden' name='action' value='submit-form' />";
echo "<input type='hidden' name='hide' value='$ques' />";
{ Enter the rest of your first block of code from above here }
echo "</form>";
그리고 네 안에functions.php
파일(또는 기타)php
를 경유하여 포함시킨 파일functions.php
이 방법을 사용할 수 있습니다.
add_action('admin_post_submit-form', '_handle_form_action'); // If the user is logged in
add_action('admin_post_nopriv_submit-form', '_handle_form_action'); // If the user in not logged in
function _handle_form_action(){
{ Enter your second block of code from above here }
}
원하는 목적지에 도착하면 리다이렉트가 필요한지 모르겠지만, 리다이렉트하면 쉽게 해결할 수 있습니다.
그리고 마지막 질문입니다.이 양식은 프론트 엔드에 있습니까, 아니면 관리 영역에 있습니까?이 대답이 달라지는 게 아니라 궁금해서...
당신의.frontend_poll_process.php
페이지가 WordPress 환경에서 호출되고 있습니다.따라서 에러가 반환됩니다.$wpdb->get_results()
.
플러그인에 코드를 추가할 수 있습니다.functions.php
후크 사용:
<?php
add_action( 'after_setup_theme', 'so_19997913' );
function so_19997913() {
require_once("function_ip.php");
$vote_result = $_POST['ans_name'];
$uid = uniqid();
global $wpdb;
$table_vote = $wpdb->prefix . "poll_answer_result";
$count = count( $vote_result );
$hidden = $_POST['hide'];
$ans_data = $wpdb->get_results( "SELECT * FROM $table_vote WHERE question_id='$hidden'" );
if ( $count > 0 ) {
foreach ( $vote_result as $vote_arr ) {
$wpdb->insert( $table_vote, array('answer_id' => $vote_arr,
'ip' => get_client_ip(),
'question_uid' => $hidden
) );
}
}
}
언급URL : https://stackoverflow.com/questions/19997913/how-to-submit-a-form-to-another-page-in-wordpress-plugin
반응형
'sourcetip' 카테고리의 다른 글
React-js는 라벨의 'for' 속성을 무시합니다. (0) | 2023.04.03 |
---|---|
뷰 폴더 밖에서 라라벨 블레이드를 사용할 수 있습니까? (0) | 2023.04.03 |
반응 헬메트의 목적은 무엇입니까? (0) | 2023.04.03 |
상태 변경 시 반응 구성 요소가 다시 렌더링되지 않음 (0) | 2023.04.03 |
커스텀 속성별로 WooCommerce 제품을 필터링하는 방법 (0) | 2023.04.03 |