web-dev-qa-db-fra.com

déclencheur ('changement') ne fonctionne pas

J'utilise l'API de pièce jointe modale wp.media pour importer des images dans le personnaliseur. Avec les images, j'ai également importé leurs métadonnées (titre, description, texte alternatif, etc.). Celles-ci se présentent sous la forme de champs de saisie dans le Customizer. Vous pouvez consulter le Customizer Screenshot here .

Maintenant, je souhaite que l'utilisateur puisse apporter des modifications et enregistrer les champs de détails de la pièce jointe à l'aide du bouton "Publier". Étant donné que je travaille dans un environnement jQuery, j'essaie d'activer le bouton 'Publier' à l'aide du mécanisme trigger('change') mais je ne suis pas en mesure de le faire. C'est le code pour déclencher l'événement de changement

jQuery('.container input').on( 'input', function() {
        jQuery(this).trigger('change');
    });

Ici, je lie l'événement déclencheur au changement dans le champ de saisie.

Sur PHP Side, je devais créer 2 champs personnalisés pour l'URL de la diapositive et le bouton CTA alors que le titre et la description étaient déjà présents. Ici est la fonction filtrée par attachment_fields_to_edit. De toute évidence, le filtre correspondant pour enregistrer les valeurs a également été utilisé.

Pour l'afficher sur le Customizer, j'ai créé un contrôle personnalisé. Here est la partie de rendu du code pour cela. $id est une chaîne contenant les identifiants de diverses pièces jointes séparées par une virgule.

Je sais à un certain niveau que l’approche de la sauvegarde des détails de la pièce jointe est fausse, mais je ne suis pas en mesure de déterminer l’erreur exacte. Toute aide serait appréciée.

De plus, si ce n'est pas la méthode de sauvegarde des détails de la pièce jointe dans Customizer, toute aide dans la bonne direction est la bienvenue.

2
Divjot Singh

Pour utiliser un contrôle personnalisé, un champ avec des attributs spéciaux doit être lié au bouton "Publier".

si vous ne voulez pas afficher ce champ, vous pouvez générer un champ caché comme celui-ci:

class WP_Test_2_Customize_Control extends WP_Customize_Control
{

    public function render_content()
    {

        ?>

            <input
                id="<?php echo htmlspecialchars("_customize-input-{$this->id}");?>"
                type="hidden"

                <?php $this->input_attrs();?>

                <?php if (!isset($this->input_attrs["value"])) {?>
                    value="<?php echo htmlspecialchars($this->value());?>"
                <?php }?>

                <?php $this->link();?>
            />

        <?php

    }


}

ensuite, lorsque vous modifiez des valeurs dans les autres champs, vous insérez des valeurs dans ce champ avec JavaScript, puis vous déclenchez l'événement change sur ce champ masqué.

1
mmm