SAI Page Structure

‘BBB Submissions’, ‘singular_name’ => ‘BBB Submission’, ‘menu_name’ => ‘BBB Submissions’ ); $args = array( ‘labels’=>$labels, ‘public’=>false, ‘show_ui’=>true, ‘supports’=>array(‘title’,’editor’,’custom-fields’), ‘capability_type’=>’post’, ); register_post_type(‘bbb_submission’, $args); }// 2) Shortcode to output a nonce hidden field for secure submissions (use in PHP templates or via do_shortcode) add_shortcode(‘bbb_nonce_field’, function(){ if(function_exists(‘wp_create_nonce’)){ return ‘‘; } return ”; });// 3) Utility: central handler to store submission and send email function bbb_store_and_notify($type, $data = array(), $redirect = ‘/’){ $admin_email = get_option(‘admin_email’); $now = current_time(‘mysql’); $title = sprintf(‘%s Submission โ€” %s โ€” %s’, strtoupper($type), isset($data[‘name’]) ? $data[‘name’] : ‘No name’, date(‘Y-m-d H:i’, strtotime($now))); // store as private post $post_id = wp_insert_post(array( ‘post_title’ => $title, ‘post_content’ => maybe_serialize($data), ‘post_status’ => ‘private’, ‘post_type’ => ‘bbb_submission’ ));if(!is_wp_error($post_id) && $post_id){ foreach($data as $k=>$v){ if(is_array($v)) $v = maybe_serialize($v); add_post_meta($post_id, sanitize_key($k), sanitize_text_field(is_string($v)? $v : wp_json_encode($v))); } }// prepare email $subject = “BBB {$type} Submission: ” . (isset($data[‘name’]) ? $data[‘name’] : ‘New Submission’); $body = “

New BBB {$type} Submission

“; foreach($data as $k=>$v){ if(is_array($v)) $v = print_r($v,true); $body .= ““; } $body .= “
“.esc_html($k).”“.nl2br(esc_html($v)).”
“; $headers = array(‘Content-Type: text/html; charset=UTF-8’); // send email wp_mail($admin_email, $subject, $body, $headers);// redirect (safe) wp_redirect( esc_url_raw( $redirect ) ); exit; }// 4) Ambassador handler add_action(‘admin_post_nopriv_bbb_ambassador_submit’,’bbb_handle_ambassador’); add_action(‘admin_post_bbb_ambassador_submit’,’bbb_handle_ambassador’); function bbb_handle_ambassador(){ if($_SERVER[‘REQUEST_METHOD’] !== ‘POST’){ wp_safe_redirect(home_url(‘/’)); exit; }// Optional nonce check โ€” if present validate, otherwise continue (for static HTML forms) if(!empty($_POST[‘bbb_nonce’])){ if(!wp_verify_nonce($_POST[‘bbb_nonce’],’bbb_form_nonce’)){ wp_die(‘Security check failed (nonce).’); exit; } }$name = isset($_POST[‘brader_name’]) ? sanitize_text_field($_POST[‘brader_name’]) : ”; $email = isset($_POST[‘brader_email’]) ? sanitize_email($_POST[‘brader_email’]) : ”; $location = isset($_POST[‘brader_location’]) ? sanitize_text_field($_POST[‘brader_location’]) : ”; $focus = isset($_POST[‘brader_focus’]) ? sanitize_text_field($_POST[‘brader_focus’]) : ”; $source = isset($_POST[‘source’]) ? sanitize_text_field($_POST[‘source’]) : ‘homepage’;$data = array( ‘type’ => ‘Ambassador’, ‘name’ => $name, ’email’ => $email, ‘location’ => $location, ‘focus’ => $focus, ‘source’ => $source, ‘ip’ => $_SERVER[‘REMOTE_ADDR’], ‘user_agent’ => isset($_SERVER[‘HTTP_USER_AGENT’])? sanitize_text_field($_SERVER[‘HTTP_USER_AGENT’]) : ” );// Redirect to welcome page after submission $redirect = home_url(‘/welcome/’); bbb_store_and_notify(‘Ambassador’, $data, $redirect); }// 5) Sponsor handler add_action(‘admin_post_nopriv_bbb_sponsor_submit’,’bbb_handle_sponsor’); add_action(‘admin_post_bbb_sponsor_submit’,’bbb_handle_sponsor’); function bbb_handle_sponsor(){ if($_SERVER[‘REQUEST_METHOD’] !== ‘POST’) { wp_safe_redirect(home_url(‘/’)); exit; } if(!empty($_POST[‘bbb_nonce’])){ if(!wp_verify_nonce($_POST[‘bbb_nonce’],’bbb_form_nonce’)){ wp_die(‘Security check failed (nonce).’); exit; } }$brand = isset($_POST[‘sponsor_brand’]) ? sanitize_text_field($_POST[‘sponsor_brand’]) : ”; $contact = isset($_POST[‘sponsor_contact’]) ? sanitize_text_field($_POST[‘sponsor_contact’]) : ”; $email = isset($_POST[‘sponsor_email’]) ? sanitize_email($_POST[‘sponsor_email’]) : ”; $interest = isset($_POST[‘sponsor_interest’]) ? sanitize_text_field($_POST[‘sponsor_interest’]) : ”;$data = array( ‘type’ => ‘Sponsor’, ‘brand’ => $brand, ‘contact’ => $contact, ’email’ => $email, ‘interest’ => $interest, ‘ip’ => $_SERVER[‘REMOTE_ADDR’], ‘user_agent’ => isset($_SERVER[‘HTTP_USER_AGENT’])? sanitize_text_field($_SERVER[‘HTTP_USER_AGENT’]) : ” );// Redirect to a sponsor thank-you or welcome $redirect = home_url(‘/welcome/?from=sponsor’); bbb_store_and_notify(‘Sponsor’, $data, $redirect); }// 6) Peraduan (competition) handler add_action(‘admin_post_nopriv_bbb_peraduan_submit’,’bbb_handle_peraduan’); add_action(‘admin_post_bbb_peraduan_submit’,’bbb_handle_peraduan’); function bbb_handle_peraduan(){ if($_SERVER[‘REQUEST_METHOD’] !== ‘POST’) { wp_safe_redirect(home_url(‘/’)); exit; } if(!empty($_POST[‘bbb_nonce’])){ if(!wp_verify_nonce($_POST[‘bbb_nonce’],’bbb_form_nonce’)){ wp_die(‘Security check failed (nonce).’); exit; } }$name = isset($_POST[‘entry_name’]) ? sanitize_text_field($_POST[‘entry_name’]) : ”; $phone = isset($_POST[‘entry_phone’]) ? sanitize_text_field($_POST[‘entry_phone’]) : ”; $email = isset($_POST[‘entry_email’]) ? sanitize_email($_POST[‘entry_email’]) : ”; $file = isset($_POST[‘entry_file’]) ? esc_url_raw($_POST[‘entry_file’]) : ”;// optional handling if a file was uploaded via input type=”file” named ‘entry_file_upload’ if(!empty($_FILES[‘entry_file_upload’]) && $_FILES[‘entry_file_upload’][‘size’] > 0){ require_once(ABSPATH . ‘wp-admin/includes/file.php’); $uploaded = wp_handle_upload($_FILES[‘entry_file_upload’], array(‘test_form’=>false)); if(isset($uploaded[‘url’])){ $file = esc_url_raw($uploaded[‘url’]); } }$data = array( ‘type’ => ‘Peraduan’, ‘name’ => $name, ‘phone’ => $phone, ’email’ => $email, ‘file’ => $file, ‘ip’ => $_SERVER[‘REMOTE_ADDR’], ‘user_agent’ => isset($_SERVER[‘HTTP_USER_AGENT’])? sanitize_text_field($_SERVER[‘HTTP_USER_AGENT’]) : ” );$redirect = home_url(‘/peraduan-thanks/’); bbb_store_and_notify(‘Peraduan’, $data, $redirect); }// 7) Admin menu page to view submissions quickly add_action(‘admin_menu’,’bbb_submissions_admin_menu’); function bbb_submissions_admin_menu(){ add_menu_page(‘BBB Submissions’,’BBB Submissions’,’manage_options’,’bbb-submissions’,’bbb_submissions_page_fn’,’dashicons-archive’,26); }function bbb_submissions_page_fn(){ if(!current_user_can(‘manage_options’)) wp_die(‘Insufficient permissions’); $args = array(‘post_type’=>’bbb_submission’,’posts_per_page’=>50,’post_status’=>’private’,’orderby’=>’date’,’order’=>’DESC’); $subs = get_posts($args); echo ‘

BBB Submissions (latest 50)

‘; if($subs){ foreach($subs as $s){ $meta = get_post_meta($s->ID); $type = isset($meta[‘type’][0]) ? esc_html($meta[‘type’][0]) : ‘N/A’; $name = isset($meta[‘name’][0]) ? esc_html($meta[‘name’][0]) : (isset($meta[‘brand’][0]) ? esc_html($meta[‘brand’][0]) : ‘โ€”’); $email = isset($meta[’email’][0]) ? esc_html($meta[’email’][0]) : ‘โ€”’; $view_link = admin_url(‘post.php?post=’.$s->ID.’&action=edit’); echo ‘‘; } } else { echo ‘‘; } echo ‘
DateTypeName / EmailView
‘.esc_html($s->post_date).’‘.esc_html($type).’‘.esc_html($name).’ / ‘.esc_html($email).’Open
No submissions yet.
‘; }// 8) Helpful: ensure wp_mail works (recommendation printed to admin) add_action(‘admin_notices’,’bbb_check_mail_setup’); function bbb_check_mail_setup(){ if(!current_user_can(‘manage_options’)) return; // show a small notice if WP Mail may not be configured (optional) if(!get_option(‘bbb_mail_check_shown’)){ echo ‘

BBB Notice: Ensure outgoing email works (install WP Mail SMTP and set From: admin@bbb-official.com) for reliable form delivery.

‘; update_option(‘bbb_mail_check_shown’,1); } } ?>
Translate »
ๆปšๅŠจ่‡ณ้กถ้ƒจ