PHPのエラー解消についてご教示下さい

実現したいこと

WordPressサイトにおいてのPHPエラー解消。

発生している問題・分からないこと

WordPressサイトにおいて、フォームの送信後confirm画面にエラー文が出る

フォーム内容は受信可能、送信者にも確認メールは通常通り返るので、
業務に支障は出ませんが、送信者側にエラーが見えてしまうので、出ないようにしたいです。

エラーメッセージ

error

1Warning: Undefined array key "action" in /home/サーバ番号/該当サイト.com/public_html/wp-content/plugins/プラグイン名/class/class-form.php on line 37

該当のソースコード

<?php /** * Form & Action */ class ATTMGR_Form { /** * Initialize */ public static function init(){ add_action( 'template_redirect', array( 'ATTMGR_Form', 'access_control' ), 99 ); add_action( 'template_redirect', array( 'ATTMGR_Form', 'action' ), 99 ); add_filter( ATTMGR::PLUGIN_ID.'_action', array( 'ATTMGR_Form', 'update_by_staff' ), 99 ); add_filter( ATTMGR::PLUGIN_ID.'_action', array( 'ATTMGR_Form', 'update_by_admin' ), 99 ); add_filter( ATTMGR::PLUGIN_ID.'_shortcode_staff_scheduler', array( 'ATTMGR_Form', 'staff_scheduler' ), 99, 3 ); add_filter( ATTMGR::PLUGIN_ID.'_shortcode_admin_scheduler', array( 'ATTMGR_Form', 'admin_scheduler' ), 99, 3 ); } /** * フォームアクション: form action */ public static function action() { global $attmgr, $wpdb; if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) { $result = false; $result = apply_filters( ATTMGR::PLUGIN_ID.'_action', $result ); } } /** * Scheduler for staff */ public static function update_by_staff( $result ) { global $attmgr, $wpdb; //該当箇所Line37ココ↓↓ if ( ATTMGR::PLUGIN_ID.'_update_by_staff' != $_POST['action'] ) { return $result; } $error = ''; if ( empty( $_POST['onetimetoken'] ) || ! wp_verify_nonce( $_POST['onetimetoken'], ATTMGR::PLUGIN_ID ) ) { $error = 'NONCE_ERROR'; } else { $staff_id = $attmgr->user['operator']->data['ID']; $values = array(); if ( ! empty( $_POST[ATTMGR::PLUGIN_ID.'_post'] ) ) { foreach ( $_POST[ATTMGR::PLUGIN_ID.'_post'] as $date => $value ) { $starttime = $value['starttime']; $endtime = $value['endtime']; if ( empty( $starttime ) && empty( $endtime ) ) { $values[] = $wpdb->prepare( "( %d, %s, NULL, NULL )", array( $staff_id, $date ) ); } elseif ( empty( $starttime ) ) { $values[] = $wpdb->prepare( "( %d, %s, NULL, %s )", array( $staff_id, $date, $endtime ) ); } elseif ( empty( $endtime ) ) { $values[] = $wpdb->prepare( "( %d, %s, %s, NULL )", array( $staff_id, $date, $starttime ) ); } else { $values[] = $wpdb->prepare( "( %d, %s, %s, %s )", array( $staff_id, $date, $starttime, $endtime ) ); } } } $table = ''; $table = apply_filters( 'attmgr_schedule_table_name', $table ); $query = "INSERT INTO $table " ."( `staff_id`, `date`, `starttime`, `endtime` ) " ."VALUES " .implode( ',', $values )." " ."ON DUPLICATE KEY UPDATE " ."starttime = VALUES( starttime ), endtime = VALUES( endtime ) "; $ret = $wpdb->query( $query ); $ret = $wpdb->query( "DELETE FROM $table WHERE starttime IS NULL AND endtime IS NULL " ); // OFF $del_where = array(); if ( ! empty( $_POST[ATTMGR::PLUGIN_ID.'_off'] ) ) { foreach ( $_POST[ATTMGR::PLUGIN_ID.'_off'] as $date => $value ) { $del_where[] = sprintf( "'%s'", $date ); } $ret = $wpdb->query( "DELETE FROM $table WHERE `staff_id`=$staff_id AND `date` IN (".implode( ',', $del_where )." )" ); } } $url = get_permalink( get_page_by_path( $attmgr->option['specialpages']['staff_scheduler'] )->ID ); // エラーあり if ( $error ) { $query_string = ( strstr( $url, '?' ) ) ? '&' : '?'; $query_string .= sprintf( 'error=%s', $error ); header( 'Location:'.$url.$query_string ); exit; } if ( empty( $_POST['returnurl'] ) ) { header( 'Location:'.$url ); } else { header( 'Location:'.$_POST['returnurl'] ); } exit; }

試したこと・調べたこと

上記の詳細・結果

・PHP8以降になり、以前は自動で変換してくれて出なかったエラーが出るようになった
・「actionというキーが見つからない」というエラーなので、見つからなかったらどうするかという命令を書けばよい??

ということは分かりましたが、「ならばどんなコードを足すのか」が全く分かりません。
似たようなQ&AやGoogleを検索しましたが、同じと思われる文がなく
応用がわからないため解答にたどり着いていません。

補足

PHPの基礎から学べば容易いことなのかもしれませんが、本来の担当が不在なため、現状そこまで掛ける時間が足りていません。コードの解答をいただけますと非常に助かります。
クレクレな質問で大変恐縮です。何卒よろしくお願いいたします。
足りない情報がありましたらご指示下さいませ。

コメントを投稿

0 コメント