views:

34

answers:

1

In WordPress there is Biographical Info under Profile. I would like to prevent the user from exceeding a maximum length of 400 characters. Also, the number of hyperlinks he can place in the biographical info should not exceed three. How do I do that? I am very familiar with JQuery, if that helps in this question. I am just a newbie with WordPress.

+3  A: 

For the Javascript side, you should attach the necessary events to the description field. You can load your script via the wp_enqueue_script hook, and you probably want to do all this in your handler for admin_enqueue_scripts, where you check for the passed $hook_name, which in this case is the page name. It is user-edit.php when an admin edits a user, and profile.php when the user edits their own information (in which case IS_PROFILE_PAGE will also be defined as TRUE).

add_action('admin_enqueue_scripts', 'add_description_validation_script');
function add_description_validation_script($pagename) {
   if ($pagename == 'profile.php' || $pagename == 'user-edit.php') {
      wp_enqueue_script('description_validation', '/path/to/description_validation.js');
   }
}

For the PHP side, you need the pre_user_description filter. This gives you the current biographical text, and your function can change this and return something else.

add_filter('pre_user_description', 'sanitize_description');
function sanitize_description($description)
{
   // Do stuff with the description
   return $description;
}

If, instead of silently changing the description, you want to show an error, you should look into the user_profile_update_errors hook. There you can validate the given data and return error messages to the user.

You probably want to wrap this all up in a plugin, so you can keep the code together and easily enable or disable it. A plugin is just a file in the /wp-content/plugins/ directory, most likely in a subdirectory named after your plugin.

Jan Fabry
Thanks for the detailed answer! This surely points me in the right direction!
Giljed Jowes