the filter is not called in most cases, if user is instance of WP_USER */ //function filter_user_id_CIPF($id) { // PLGNTLS_class::debug_infos(); // error_log("-in filter_user_id_CIPF, id : " . $id); // this is not output // return 117; //} //function add_filter_for_user_id_CIPF($wp) { // PLGNTLS_class::debug_infos(); // error_log("-in add_filter_for_user_id_CIPF"); // this is output // add_filter('determine_current_user', 'filter_user_id_CIPF', 10, 1); //} //add_shortcode('cipf_change_meta_id', 'add_filter_for_user_id_CIPF'); ////add_action('wp', 'add_filter_for_user_id_CIPF'); /* * version 2 : * * adding a filter on the page to alter the id used by the get_metadata function * because it seems it is the function used by formBuilder to retrieve the fields * -> in divi-for-builder/includes/modules/FormField/FormField.php line 5319 : $user_metadata = get_user_meta( $current_user->ID, '', true ); * -> in wp-includes/meta.php line 635 * * somehow it makes the function get_user_metadata returns nothing * */ //function filter_user_id_CIPF($null, $object_id, $meta_key, $single, $meta_type ) { // PLGNTLS_class::debug_infos(); // error_log("---"); // error_log("-object_id"); // error_log(json_encode($object_id)); // error_log("-meta_key"); // error_log(json_encode($meta_key)); // error_log("-single"); // error_log(json_encode($single)); // error_log("-meta_type"); // error_log(json_encode($meta_type)); // // $object_id = 117; // // /* // * I just copied the code of wordpress : // * i'm not sure there is a better way // * // */ // $meta_cache = wp_cache_get( $object_id, $meta_type . '_meta' ); // // if ( ! $meta_cache ) { // $meta_cache = update_meta_cache( $meta_type, array( $object_id ) ); // if ( isset( $meta_cache[ $object_id ] ) ) { // $meta_cache = $meta_cache[ $object_id ]; // } else { // $meta_cache = null; // } // } // // if ( ! $meta_key ) { // return $meta_cache; // } // // if ( isset( $meta_cache[ $meta_key ] ) ) { // if ( $single ) { // return maybe_unserialize( $meta_cache[ $meta_key ][0] ); // } else { // return array_map( 'maybe_unserialize', $meta_cache[ $meta_key ] ); // } // } // /* // * FIN copy // */ //} //function add_filter_for_user_id_CIPF($wp) { // PLGNTLS_class::debug_infos(); // add_filter('get_user_metadata', 'filter_user_id_CIPF', 10, 5); //} //add_action('wp', 'add_filter_for_user_id_CIPF'); /* * version 1: * * adding a shortcode to change the behavior of acf retrieval mechanism * by changing the filter acf/pre_load_post_id that find the id acf will use * for all the functions like get_field(), get_field_object(), etc * it works, but formBuilder don't use acf functions :p * * [cipf_choose_acf_id] -> nothing happens * [cipf_choose_acf_id logged_in] -> the next acf ids will be of the logged-in user * [cipf_choose_acf_id post_creator] -> the next acf ids will be of the creator of the post * (for the moment, only for author page) * [cipf_choose_acf_id off] -> stop the use of specials ids * */ //function test_acf_CIPF($acf_id, $id) { // PLGNTLS_class::debug_infos(); // error_log("acf_id: " . $acf_id . ", id : " . $id); // if ($id === null) { // return null; // } // return 'user_'.$id; //} // //function choose_acf_id_CIPF($options) { // PLGNTLS_class::debug_infos(); // // $option = reset($options); // if (!is_string($option)) { // return; // } // // if ($option === 'logged_in') { // $id = get_current_user_id(); // } // else if ($option === 'post_creator') { // $id = get_queried_object_id(); // } // else if ($option === 'off') { // $id = null; // } // else // return; // // /* // * this filter is called by acf to find the id to use // * with functions like get_field() // * // */ // add_filter('acf/pre_load_post_id', function($null, $acf_id) use ($id) { // return test_acf_CIPF($acf_id, $id); // }, 10, 2); //} //add_shortcode('cipf_choose_acf_id', 'choose_acf_id_CIPF'); /* * ABANDONNED * * FIRST TRY : HANDLE THE FORM SUBMIT * * not always simple to get the id of the author * anyway it does not help to show the acf values on form * */ /* * custom action in php on custom form submission * custom forms are not processed by divi form builder * so they don't change between hooks before and after process * */ //function admin_validate_prof_CIPF($data) { // PLGNTLS_class::debug_infos(); // $acf_prof_is_activ = PLGNTLS_class::ACF_PROF_IS_ACTIV; // // if (empty($data)) // redirection_profil_CIPF(); // // error_log("---"); // error_log("data"); // error_log(json_encode($data)); // // if (!isset($data[$acf_prof_is_activ['_name']])) // redirection_profil_CIPF(); // // $is_activ = $data[$acf_prof_is_activ['_name']]; // error_log("is_activ"); // error_log($is_activ); //} /* * version 4 : * calling the action to validate from the url path and/or query * */ //function url_custom_form_admin_validate_prof_CIPF() { // PLGNTLS_class::debug_infos(); // $slug_admin_validate_prof = PLGNTLS_class::SLUG_ADMIN_VALIDATE_PROF; // // if (!isset($_GET['q'])) // return; // // /* // * check the request /path/ // * for url : https://url.com/path/to/file/?query=value // * -> $_GET: {"q":"/path/to/file/","query":"value"} // * // */ // $get_path = trim($_GET['q'], '/'); // if ($get_path !== $slug_admin_validate_prof) // return; // // admin_validate_prof_CIPF($_POST); //} //add_action('init', 'url_custom_form_admin_validate_prof_CIPF'); /* * version 3 : * calling the action to validate from the FormBuilder hook * */ //function custom_form_admin_validate_prof_CIPF($form_id, $post_array, $form_type) { // PLGNTLS_class::debug_infos(); // $admin_validate_prof_field = PLGNTLS_class::ADMIN_VALIDATE_PROF_FIELD; // // if ($form_type !== 'custom') // return; // // $field_id = $post_array['field_id']; // $contains_id = in_array($admin_validate_prof_field, $field_id); // if ($contains_id === false) // return; // // admin_validate_prof_CIPF($post_array); //} //add_action('df_before_process', 'custom_form_admin_validate_prof_CIPF', 10, 3); /* * version 2 : ABANDONNED * tried to receive the form in ajax from front with wp REST API * but I cannot verify if the user is logged in * so it does not work * */ //function admin_validate_prof_form_CIPF($request) { // PLGNTLS_class::debug_infos(); // $slug_page_redirection = PLGNTLS_class::SLUG_PAGE_REDIRECTION; // // error_log("-----"); // error_log("inside admin_validate_prof_form_CIPF"); // error_log("request"); // error_log(json_encode($request)); // error_log("_POST"); // error_log(json_encode($_POST)); // // _POST : {"field_title":["\u00c9tat du compte"],"field_name":["compte-actif"],"field_id":["cipf_admin_activate_prof"],"form_key":"40781-1","unique_id":"91eed9aa-2b92-4da7-a0b4-e94f24515223","form_type":"custom","divi-form-submit":"yes","form_id":"","form_type_confirm":""} // // // Set up nocache headers before redirecting : https://developer.wordpress.org/reference/functions/wp_safe_redirect/#user-contributed-notes // nocache_headers(); // $redirect_url = home_url() . '/' . $slug_page_redirection; // wp_redirect($redirect_url, 301); // exit; //} //function endpoint_form_admin_activate_prof_CIPF() { // PLGNTLS_class::debug_infos(); // $base_rest_route = PLGNTLS_class::URL_BASE_REST_ROUTE; // // register_rest_route($base_rest_route, '/admin_prof_activate_form', array( // 'methods' => 'POST', // 'callback' => 'admin_validate_prof_form_CIPF', // )); //}; //add_action('rest_api_init', 'endpoint_form_admin_activate_prof_CIPF'); /* * version 1 : ABANDONNED * enqueue script that should prevent the form to submit, but does not work * */ //function admin_validate_prof_prevent_CIPF() { // PLGNTLS_class::debug_infos(); // $handle = 'admin_prevent_submit'; // $url = PLGNTLS_class::root_url() . 'js/admin_prevent_submit.js'; // $dependencies = array(); // $version = null; // $defer = true; // wp_enqueue_script($handle, $url, $dependencies, $version, $defer); //} //add_action('wp_enqueue_scripts', 'admin_validate_prof_prevent_CIPF'); ?>