vendredi 22 avril 2016

WP create new organizer in EventsCalendar when user registers with UserManager front-end

I have two plugins: Events Calendar and WP User Manager. I have created two roles: Guest and Organizer. I have also created 4 custom fields in WP User Manager:

wpum_event_organizer wpum_organizer_tel wpum_organizer_website wpum_organizer_email

When a new user fills in the front-end registration form (courtesy of WP User Manager) and hits the submit button, I need to achieve the following:

  • the user registration gets stored (no problems here) - a new organizer with the data from the above 4 custom fields is created in Events Calendar

And here comes the problem.

I have tried the code below (inserted in my child theme functions file) and I get no errors (and new user registration happens and gets stored correctly), but no new organizer is created in Events Calendar.

This is the code I am using on my child theme functions.php file:

add_action('wpum_before_user_update', 'format_ec_event_meta_from_wpum');



function format_ec_event_meta_from_wpum(){


    //Organizer details

    $organizerName = event_organizer;

    $organizerPhone = organizer_tel;

    $organizerWebsite = organizer_website;

    $organizerEmail = organizer_email;


    $savedOrganizer = get_page_by_title($_POST['wpum_'. $organizerName], 'OBJECT', 'tribe_organizer');



        if (isset($savedOrganizer)){

                $_POST['organizer']['OrganizerID'] = $savedOrganizer->ID;

        } else {


                $_POST['organizer']['Organizer'] = $_POST['wpum_'. $organizerName];

                $_POST['organizer']['Phone'] = $_POST['wpum_'. $organizerPhone];



                if( isset( $_POST['wpum_'. $organizerWebsite] ) )

                    $_POST['organizer']['Website'] = $_POST['wpum_'. $organizerWebsite] == 'http://' ? '' : $_POST['wpum_'. $organizerWebsite];

                if( isset( $_POST['wpum_'. $organizerEmail] ) )

                    $_POST['organizer']['Email'] = $_POST['wpum_'. $organizerEmail];

        }

}

add_action('save_post', 'save_ec_event_meta_from_wpum', 11, 2);



function save_ec_event_meta_from_wpum($postId, $post) {

if( class_exists('TribeEvents') ) {


    if ( $post->post_type != TribeEvents::POSTTYPE || defined('DOING_AJAX') ) {

        return;

    }


    if( class_exists('TribeEventsAPI') ) {

            $_POST['Organizer'] = stripslashes_deep($_POST['organizer']);


    if( !empty($_POST['Organizer']['OrganizerID']) )

        $_POST['Organizer'] = array('OrganizerID' => $_POST['Organizer']['OrganizerID']);



    TribeEventsAPI::saveEventMeta($postId, $_POST, $post);


}

}

} 

Because of my very limited experience with WordPress, I suspect that I'm breaking my own code when checking if tribe classes exist, but then even if I'm at a death point and I'm banging my head to the wall since 3 days. Any hint or, better, solution would be greatly appreciated.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire