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?
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;
}
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;
}
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