Lier un champs ACF à la Author Page

Sources : https://usersinsights.com/acf-user-profile

L’idée est de créer un snippet PHP qui lie un groupe de champs ACF à la page auteur (càd également aux données du profil User) et d’avoir une interface pour l’éditer.

Ce qui dans le compte User se traduira par:

LES ACTIONS :

  • PHP function to create a form shortcode
  • PHP function to process your form data
  • A page using these shortcodes to input / output user data

Code PHP pour lier ACF et Author Page:
(ATTENTION : lors du « add_query_arg » la redirection est ici différente de l’exemple source. Ici la page revient sur la page Author du user en cours. L’exemple source utilise un get_permalink())

//lier groupe de champs ACF a Author Page
function my_acf_user_form_func( $atts ) {
 
  $a = shortcode_atts( array(
    'field_group' => ''
  ), $atts );
 
  $uid = get_current_user_id();
  
  if ( ! empty ( $a['field_group'] ) && ! empty ( $uid ) ) {
    $options = array(
      'post_id' => 'user_'.$uid,
      'field_groups' => array( intval( $a['field_group'] ) ),
      'return' => add_query_arg( 'updated', 'true', '/?author=' . $uid )
    );
    
    ob_start();
    
    acf_form( $options );
    $form = ob_get_contents();
    
    ob_end_clean();
  }
  
    return $form;
}
 
add_shortcode( 'my_acf_user_form', 'my_acf_user_form_func' );

Déclaration du ShortCode:

//adding AFC form head
function add_acf_form_head(){
    global $post;
    
  if ( !empty($post) && has_shortcode( $post->post_content, 'my_acf_user_form' ) ) {
        acf_form_head();
    }
}
add_action( 'wp_head', 'add_acf_form_head', 7 );

Le shortcode en question:

[my_acf_user_form field_group="574"]

Ici le plugin