Untitled
unknown
plain_text
a year ago
4.3 kB
4
Indexable
add_filter('wp_dropdown_users', function($output){ return modify_user_dropdown($output); }, 10, 1); function modify_user_dropdown($html_output) { // Use DOMDocument to parse the HTML $dom = new DOMDocument(); libxml_use_internal_errors(true); // Suppress warnings/errors due to HTML5 or malformed HTML $dom->loadHTML($html_output, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // Load HTML without adding doctype, html, and body tags libxml_clear_errors(); // Find the select element $select = $dom->getElementById('b2bking_all_users_dropdown'); if (!$select) { return $html_output; // If select element not found, return original HTML } // Create an array to hold options $options = array(); $optionsToRemove = array(); // Process each option element in the select foreach ($select->getElementsByTagName('option') as $option) { $userId = $option->getAttribute('value'); if (!empty($userId)) { $userData = get_userdata($userId); if ($userData) { // Get username and usermeta for billing_company $username = $userData->user_login; // user_login is the username $company = get_user_meta($userId, 'billing_company', true); if (!empty($company)) { // Update the option text to show user ID and company, but set the value to username $option->nodeValue = $userId . ' - ' . $company; $option->setAttribute('value', $username); } else { // If no company found, display user ID and indicate no company $option->nodeValue = $userId . ' - No Company'; $option->setAttribute('value', $username); } // Add the option element to array $options[$userId] = $option; $optionsToRemove[] = $option; } } } // Remove old options from the DOM foreach ($optionsToRemove as $optionToRemove) { $select->removeChild($optionToRemove); } // Sort options by key (userID) ksort($options); // Append sorted options back to the select element foreach ($options as $option) { $select->appendChild($option); } // Save the updated HTML and return it return $dom->saveHTML(); } add_action('admin_head', function(){ ?> <script> jQuery(document).ready(function(){ setTimeout(function(){ jQuery('#b2bking_category_add_user').off('click'); jQuery("#b2bking_category_add_user").on("click",function(){ // Get username let username = jQuery("#b2bking_all_users_dropdown").children("option:selected").val(); // Get content and check if username already exists let content = jQuery("#b2bking_category_users_textarea").val(); let usersarray = content.split(','); let exists = 0; jQuery.each( usersarray, function( i, val ) { if (val.trim() === username){ exists = 1; } }); if (exists === 1){ // Show "Username already in the list" for 3 seconds jQuery("#b2bking_category_add_user").text(b2bking.username_already_list); setTimeout(function(){ jQuery("#b2bking_category_add_user").text(b2bking.add_user); }, 2000); } else { // remove last comma and whitespace after content = content.replace(/,\s*$/, ""); // if list is not empty, add comma if (content.length > 0){ content = content + ', '; } // add username content = content + username; jQuery("#b2bking_category_users_textarea").val(content); } }); }, 300); }); </script> <?php });
Editor is loading...
Leave a Comment