$value2) { $value = extract_if_array_size_one_CIPF($value2); // if key was not in first array, add the new element to it if (!isset($new_array[$key2])) { $new_array[$key2] = $value2; continue; } // if key was in first array, add both in an array $value1 = extract_if_array_size_one_CIPF($new_array[$key2]); if (empty($value1)) $new_array[$key2] = $value2; else if (empty($value2)) $new_array[$key2] = $value1; else { $new_value = array($value1, $value2); $new_array[$key] = $new_value; } } return $new_array; } function output_list_front_CIPF($array, $current_user, $user_id) { PLGNTLS_class::debug_infos(); $output = ''; return $output; } /* * shortcode to write user info of post author * 0 or 1 argument, usage : * - [cipf_user_info] -> list of all availables infos * - [cipf_user_info user_email] -> display the email * - [cipf_user_info user_email user_login] -> display the email * - [cipf_user_info user_email author='logged_in'] -> display the email of the connected user * - [cipf_user_info user_email author='post_creator'] -> display the email of the creator of the page/post * */ function current_user_infos_CIPF($atts) { PLGNTLS_class::debug_infos(); if (!is_user_logged_in()) return ; /* * choose the default id target : logged in user, or post creator ? * $author_is = 'logged_in'; // logged in user */ $author_is = 'post_creator'; // creator of post (also for author pages) /* * has parameter 'author' ? * if yes, removes it from $atts * */ if (is_array($atts)) { if (isset($atts['author'])) { $author_is = $atts['author']; unset($atts['author']); } } /* * should output all or a specific parameter ? * */ $output_all = false; if (empty($atts)) $output_all = true; else if (count($atts) === 0) $output_all = true; /* * get author id outside loop and outside singular page : https://wordpress.stackexchange.com/q/65548 * */ if ($author_is === 'logged_in') { $current_user = wp_get_current_user(); $user_id = get_current_user_id(); } else { if (is_author()) { $user_id = get_queried_object_id(); } else if (in_the_loop()) { $user_id = get_the_author_meta('ID'); } else if (is_singular()) { $user_id = get_queried_object()->post_author; } else { global $wp_query; if (!empty($wp_query->posts)) $user_id = $wp_query->posts[0]->post_author; } //$current_user = new WP_User($user_id); $current_user = get_user_by('id', $user_id); } /* * output all the available parameters (for help) * */ if ($output_all) { $user_properties = (array) get_userdata($user_id)->data; $user_metas = get_user_meta($user_id); $user_infos = merge_two_arrays_CIPF($user_metas, $user_properties); return output_list_front_CIPF($user_infos, $current_user, $user_id); } /* * real purpose of this shortcode : * only return the first argument (that is not 'author') * */ if (is_array($atts)) $query = $atts[0]; else if (is_string($atts)) $query = $atts; else return ''; // $output = $current_user->$query; return format_user_info_CIPF($query, $current_user, $user_id); } add_shortcode('cipf_user_info', 'current_user_infos_CIPF'); ?>