Skip to content

You can add your own fields to resumes, for example a GitHub link or a preferred timezone. You declare a field once and it appears in the Resume Builder, the single-page resume form and the Quick Resume Form. If you prefer no code, use the Field Builder.

The wcb_resume_form_fields filter receives the field groups (an empty array by default) and the resume post ID, and returns the groups. Each group has id, label and fields. Each field has key, label and type, plus optional required, placeholder, description and options.

add_filter( 'wcb_resume_form_fields', function( $groups, $resume_id ) {
$groups[] = [
'id' => 'links',
'label' => __( 'Online presence', 'my-plugin' ),
'fields' => [
[
'key' => '_wcb_resume_github_url',
'label' => __( 'GitHub profile', 'my-plugin' ),
'type' => 'url',
'required' => false,
],
[
'key' => '_wcb_resume_website_url',
'label' => __( 'Personal website', 'my-plugin' ),
'type' => 'url',
'required' => false,
],
],
];
return $groups;
}, 10, 2 );

After you add this:

  • The Resume Builder, the single-page form and the Quick Resume Form show the “Online presence” group.
  • Each value is saved as post meta on the resume under the key you declared. The key is lowercased when saved, and nothing is added in front of it, so pick a unique key.
  • Only keys you declare in the filter are saved. Other submitted keys are ignored.
  • You read a value with get_post_meta( $resume_id, '_wcb_resume_github_url', true ).

text, textarea, email, tel, url, number, date, select, checkbox, radio, multiselect.

  • email - cleaned as an email address.
  • url - cleaned as a URL.
  • number - saved as a number, or empty if the value is not numeric.
  • date - saved only in YYYY-MM-DD form, otherwise empty.
  • textarea - cleaned as multi-line text.
  • checkbox - saved as 1 when on and empty when off.
  • select and radio - saved only if the value is one of the field’s options, otherwise empty.
  • multiselect - saved as a comma-separated list of the chosen option values.
  • Everything else - cleaned as single-line text.

To reject or change a value, use the wcb_save_custom_field filter. It receives the cleaned value, the field key and the resume ID. Return null to skip saving, or a scalar to replace the value.

The wcb_resume_form_initial_state filter changes what the Resume Builder starts with. It receives the state array and the resume post ID. Custom field values sit under the customFields key of the state, keyed by field key.

add_filter( 'wcb_resume_form_initial_state', function( $state, $resume_id ) {
$author_id = (int) get_post_field( 'post_author', $resume_id );
$links = get_user_meta( $author_id, '_partner_profile_links', true );
if ( $links ) {
$state['customFields']['_wcb_resume_github_url'] = $links['github'] ?? '';
}
return $state;
}, 10, 2 );

This filter applies to the Resume Builder only.

  • Save: PUT /wcb/v1/resumes/{id} with a custom_fields object in the body, keyed by field key.
  • Read: GET /wcb/v1/resumes/{id} does not return custom fields by default. Add them with the wcb_rest_prepare_resume filter. It receives the response data, the resume post, the request and a context string.