web-dev-qa-db-fra.com

Comment ajouter un attribut personnalisé?

Comment ajouter un attribut personnalisé dans le champ Formulaire de contact 7sans javascript?

Par exemple, il existe un tel champ sur la page:

<input type="text" name="name" class="form-control" id="name-1" data-attr="custom" data-msg="Текст 1"> 

Question: est-il possible de définir ces attributs personnalisés (data-attr, data-msg) dans les champs du panneau d'administration?

9
HamSter

Trouvez le nom de votre champ.

[text* text-21]

Si le nom de votre champ name = "text-21", comme dans mon exemple, ajoutez ce code au fichier function.php.

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="text-21"' );
    $content = substr_replace( $content, ' data-attr="custom" data-msg="Текст 1" ', $str_pos, 0 );
    return $content;
}

Notez que cela ajoutera un attribut personnalisé à tous les éléments de formulaire où name est text-21, dans tous les formulaires portant name = "text-21, si vous voulez éviter cela, donnez à votre élément de formulaire un nom unique [text * inique-name]

Puis changez le code en 

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="inique-name"' );
    $content = substr_replace( $content, ' data-attr="custom" data-msg="Текст 1" ', $str_pos, 0 );
    return $content;
}
12
Oleg Apanovich

Plusieurs attributs peuvent également être ajoutés. par exemple

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );

function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="your-email-homepage"' );
    $content = substr_replace( $content, ' aria-describedby="emailHelp" ', $str_pos, 0 );

    $str_pos2 = strpos( $content, 'name="your-fname-homepage"' );
    $content = substr_replace( $content, ' aria-describedby="fnameHelp" ', $str_pos2, 0 );

    $str_pos3 = strpos( $content, 'name="your-lname-homepage"' );
    $content = substr_replace( $content, ' aria-describedby="lnameHelp" ', $str_pos3, 0 );
    return $content;        
}
1
Victor Drover

C'est peut-être vieux, mais pour ceux d'entre vous qui rencontrent ce problème, j'ai réussi à le surmonter en procédant comme suit:

disons que c'est la forme:

<script>
hbspt.forms.create({
    css: '',
    portalId: '',
    formId: 'YOUR_FORM_ID'
});
</script>

Vous pouvez ajouter le code suivant dans les balises de script:

    window.addEventListener('message', event => {
        if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady' && event.data.id === 'YOUR_FORM_ID') {
            document.getElementById("name-1-YOUR_FORM_ID").setAttribute("data-msg", "Текст 1");
        }
    });

referance: https://developers.hubspot.com/global-form-events

0
Tomer Hadad