Aufruf einer Memberfunktion get_error_messages () on null

Ich verwende den folgenden Code, um benutzerdefinierte Posts von Benutzern auf einer benutzerdefinierten Seite zu senden. Wenn ich ein Formular abschicke, bekomme ich diesen Fehler:

Schwerwiegender Fehler: Rufen Sie eine Memberfunktion get_error_messages () für null in D: \ Ampps \ www \ wordpress2 \ wp-content \ themes \ tours \ includes \ add_tour.func.php in Zeile 85 auf

Linie 85:

…} elseif (Anzahl ($ reg_errors-> get_error_messages ()) <1) {…

add('tourTitle', 'عنوان تور را وارد کنید.'); } if (empty($keywords)) { $reg_errors->add('keywords', 'حداقل یک کلمه کلیدی و حداکثر سه کلمه کلیدی وارد کنید.'); } if (empty($sourceTour)) { $reg_errors->add('sourceTour', 'مبدا و آغاز تور را وارد کنید.'); } if (empty($destinationTour)) { $reg_errors->add('destinationTour', 'مقصد تور را وارد کنید.'); } if (empty($duration)) { $reg_errors->add('duration', 'مدت اقامت را وارد کنید.'); } if (!is_numeric($duration)) { $reg_errors->add('duration', 'مدت اقامت فقط میتواند مقداری عددی باشد.'); } if (empty($tourContent)) { $reg_errors->add('tourContent', 'توضیح مختصری در مورد تور وارد کنید.'); } if (empty($agancyservice)) { $reg_errors->add('agancyservice', 'خدمات آژانس مسافرتی را وارد کنید.'); } if (empty($passports)) { $reg_errors->add('passports', 'مدارک مورد نیاز تور مسافرنی را وارد کنید.'); } if (empty($transport)) { $reg_errors->add('transport', 'نوع سفر را انتخاب کنید.'); } } function add_complete_tour(){ global $tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc; if (is_wp_error($reg_errors) && count($reg_errors->get_error_messages()) > 0) { echo ''; } elseif (count($reg_errors->get_error_messages())  $tourTitle, 'post_content' => $tourContent, 'post_status' => 'pending', 'post_author' => get_current_user_id(), ); // Insert the post into the database $post_id = wp_insert_post( $post_data ); echo ''; } } ?> 

Solutions Collecting From Web of "Aufruf einer Memberfunktion get_error_messages () on null"

Die Antwort ist genau dort in deinem Fehler. Ihr erstes if überprüft, dass $reg_errors definitiv eine Instanz von WP_Error , aber Ihr elseif nicht. Du brauchst:

 elseif ( is_wp_error( $reg_errors ) && count( $reg_errors->get_error_messages() ) < 1 ) 

Ich fand das Prolem und triggerse es. Ich habe folgendes bearbeitet:

 add_complete_tour($tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc); 

Und fügte der globalen Variable in der add_complete_tour function $reg_errors hinzu:

  global $reg_errors,$tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc; 

Vollständiger Code:

  < ?php $postTitleError = ''; if(isset($_POST['submitted']) && isset($_POST['post_nonce_field']) && wp_verify_nonce($_POST['post_nonce_field'], 'post_nonce')) { validate_tour_data( $_POST['tourTitle'],$_POST['keywords'],$_POST['sourceTour'],$_POST['destinationTour'],$_POST['duration'],$_POST['tourContent'],$_POST['agancyservice'],$_POST['passports'],$_POST['transport'],$_POST['hotel_name'],$_POST['hotelRate'],$_POST['room1'],$_POST['room2'],$_POST['room3'],$_POST['room4'],$_POST['desc'] ); global $tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc; $tourTitle = sanitize_text_field($_POST['tourTitle']); $keywords = sanitize_text_field($_POST['keywords']); $sourceTour = sanitize_text_field($_POST['sourceTour']); $destinationTour = sanitize_text_field($_POST['destinationTour']); $duration = sanitize_text_field($_POST['duration']); $tourContent = sanitize_text_field($_POST['tourContent']); $agancyservice = sanitize_text_field($_POST['agancyservice']); $passports = sanitize_text_field($_POST['passports']); $transport = sanitize_text_field($_POST['transport']); $hotel_name = sanitize_text_field($_POST['hotel_name']); $hotelRate = sanitize_text_field($_POST['hotelRate']); $room1 = sanitize_text_field($_POST['room1']); $room2 = sanitize_text_field($_POST['room2']); $room3 = sanitize_text_field($_POST['room3']); $room4 = sanitize_text_field($_POST['room4']); $desc = sanitize_text_field($_POST['desc']); add_complete_tour($tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc); } function validate_tour_data($tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc){ global $reg_errors; $reg_errors = new WP_Error; if (empty($tourTitle)) { $reg_errors->add('tourTitle', 'عنوان تور را وارد کنید.'); } if (empty($keywords)) { $reg_errors->add('keywords', 'حداقل یک کلمه کلیدی و حداکثر سه کلمه کلیدی وارد کنید.'); } if (empty($sourceTour)) { $reg_errors->add('sourceTour', 'مبدا و آغاز تور را وارد کنید.'); } if (empty($destinationTour)) { $reg_errors->add('destinationTour', 'مقصد تور را وارد کنید.'); } if (empty($duration)) { $reg_errors->add('duration', 'مدت اقامت را وارد کنید.'); } if (!is_numeric($duration)) { $reg_errors->add('duration', 'مدت اقامت فقط میتواند مقداری عددی باشد.'); } if (empty($tourContent)) { $reg_errors->add('tourContent', 'توضیح مختصری در مورد تور وارد کنید.'); } if (empty($agancyservice)) { $reg_errors->add('agancyservice', 'خدمات آژانس مسافرتی را وارد کنید.'); } if (empty($passports)) { $reg_errors->add('passports', 'مدارک مورد نیاز تور مسافرنی را وارد کنید.'); } if (empty($transport)) { $reg_errors->add('transport', 'نوع سفر را انتخاب کنید.'); } } function add_complete_tour(){ global $reg_errors,$tourTitle,$keywords,$sourceTour,$destinationTour,$duration,$tourContent,$agancyservice,$passports,$transport,$hotel_name,$hotelRate,$room1,$room2,$room3,$room4,$desc; if (is_wp_error($reg_errors) && count($reg_errors->get_error_messages()) > 0) { echo ''; } elseif (count($reg_errors->get_error_messages()) < 1) { $post_data = array( 'post_title' => $tourTitle, 'post_content' => $tourContent, 'post_status' => 'pending', 'post_author' => get_current_user_id(), ); // Insert the post into the database $post_id = wp_insert_post( $post_data ); echo ''; } } ?>