web-dev-qa-db-fra.com

Ajouter des champs avec des sous-champs à WP Job Manager

J'ai travaillé sur un add-on personnalisé pour WP Job Manager où je modifie, via des filtres, le contenu affiché. J'ai utilisé de nombreux tutoriels sur www.wpjobmanager.com/documentation, mais je suis bloqué sur un point.

J'essaie de recréer une fonctionnalité de l'add-on Resumes (démo ici ) où vous pouvez ajouter des champs d'éducation ou d'expérience supplémentaires. J'essaie de recréer cette fonctionnalité dans le plug-in principal du gestionnaire de travaux WP afin de renseigner un sous-champ facultatif pour les adresses.

Ceci est une version réduite du code que j'ai pour l'instant: http://Pastebin.com/fAVq9vfu

J'ai ajouté avec succès les champs et les sous-champs au formulaire (il existe un fichier modèle distinct qui rend le formulaire). Ils s'inscrivent également dans la variable globale $ _POST, comme indiqué lorsque je fais un var_dump dans le modèle de prévisualisation ( exemple de capture d'écran ), mais je me trompe quelque part lorsqu'il s'agit de stocker les valeurs. Aucun des champs avec des sous-fichiers ne sont enregistrés dans la table de métadonnées post. J'ai essayé quelques options, tout récemment en incluant et en demandant à ma classe d'étendre WP_Job_Manager_Forms, classe ( https://github.com/mikejolley/WP-Job-Manager/blob/master/includes/class-wp-job- manager-forms.php ). Je crois que je peux accomplir ce que j'essaie de faire avec les filtres inclus, mais je ne sais pas lequel ni comment le faire.

Je pense que je pourrais avoir besoin d'appeler get_posted_fields () quelque part, car je ne suis pas tout à fait sûr qu'il capture mes méthodes get_posted_ {subfield} _field personnalisées.

Est-ce que quelqu'un a des conseils?

1
ahurleb

Je vois quelques éléments manquants dans votre extrait/code.

  1. Chaque champ (votre emplacement) doit inclure la priorité:

    'priority' => 19,

  2. Vous avez défini "type" comme "emplacement" mais vous n'avez pas défini ce type de champ. Les fichiers répétés dans resume manager sur lesquels vous avez basé ce code définissent des fichiers modèles pour l’éducation, l’expérience, etc. Pour définir votre propre filtre sur 'job_manager_locate_template'. Exemple rapide https://Gist.github.com/mikejolley/76d8b538fe489377793b Vous aurez besoin d'un fichier de modèle pour chacun de vos champs répétés. Nous pourrons peut-être simplifier les choses à l'avenir, mais comme je l'ai expliqué via le support, les champs répétés sont nouveaux :)

0
Mike Jolley

Nous pouvons différents types de champs pour 'Resume Manager' et les sauvegarder. Nous pouvons y parvenir via un filtre, comme suit,

//code to add custom field for Resume Manager on front end
add_filter( 'submit_resume_form_fields', 'wdm_customize_resume_fields' );

function wdm_customize_resume_fields($fields)
{
   $fields['resume_fields']['candidate_address'] = array(
    'label'       => __( 'Your Address', 'wp-job-manager-resumes' ),
    'type'        => 'text',
    'required'    => false,
    'description' => __('Add your address here','wp-job-manager-resumes'),
    'priority'    => 2
    );

   return $fields;
}

Ici, vous pouvez spécifier un nouveau champ, ajouter son étiquette, le saisir et spécifier son emplacement à l'aide de "priorité".

Maintenant, nous devons sauvegarder les champs, nous pouvons utiliser le code suivant,

add_action( 'resume_manager_update_resume_data', 'wdm_save_resume_custom_field', 10, 2 );

function wdm_save_resume_custom_field( $resume_id, $values ) {

  if(!empty($resume_id) && !empty($values)) {

     if(isset($values['resume_fields']['candidate_address']) {

       update_post_meta( $resume_id, '_candidate_address', $values['resume_fields']['candidate_address'] );
     }
  }
}

Ceci mettra à jour l'adresse du candidat dans la clé méta '_candidate_address', si elle est définie.

Ce champ enregistré doit également être affiché dans Tableau de bord. Nous pouvons y arriver comme suit,

add_filter( 'resume_manager_resume_fields', 'wdm_resume_fields_dashboard' );

function wdm_resume_fields_dashboard($fields){

   $fields['_candidate_address'] = array(
    'label'       => __( 'Your Address', 'wp-job-manager-resumes' ),
    'placeholder' => __( 'Add your address here', 'wp-job-manager-resumes' ),
    'type'        => 'text'
);

  return $fields;
}
0
WisdmLabs