es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener/establecer el valor del campo ACF mediante la API de JavaScript de ACF, en un bloque personalizado, en la página de edición de publicaciones.

Hice un bloque personalizado de Gutenberg utilizando el plugin AdvancedCustomFields PRO. Este bloque tiene un campo de galería. Necesito hacer un botón que llene el campo de galería con ciertas fotos. Renderizo el botón utilizando un nuevo tipo de campo personalizado, pero ¿cómo puedo cambiar el valor de otro campo en el mismo bloque?

La función acf.findFields (args) en la API de JavaScript de ACF funciona bien con campos que están adjuntos a la página, pero ¿cómo puedo acceder al campo en un bloque personalizado específico?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para acceder a un campo en un bloque personalizado específico, puedes utilizar el método acf.getField(key) proporcionado por la API de JavaScript de ACF.

    Primero, necesitas obtener el ID del bloque. Puedes hacer esto inspeccionando el código HTML del bloque personalizado y encontrando el atributo data-id.

    Una vez que tengas el ID del bloque, puedes utilizar el método acf.getFields() para obtener todos los campos en el bloque. Luego, recorre la lista de campos y encuentra el campo de la galería.

    Finalmente, puedes utilizar el método acf.setValue(key, value) para establecer el valor del campo de la galería a las fotos deseadas.

    Aquí tienes un ejemplo de fragmento de código:

    var blockID = 'inserta-aquí-el-ID-del-bloque'; // reemplaza con el ID de bloque real
    
    var fields = acf.getFields({ // obtener todos los campos en el bloque
        key: blockID
    });
    
    var galleryField = null;
    
    for (var i = 0; i < fields.length; i++) { // encontrar el campo de la galería
        if (fields[i].type === 'gallery') {
            galleryField = fields[i];
            break;
        }
    }
    
    if (galleryField !== null) { // establecer el valor del campo de la galería
        var photos = ['foto1.jpg', 'foto2.jpg', 'foto3.jpg']; // reemplaza con las fotos deseadas
        acf.setValue(galleryField.key, photos);
    }
    

    Nota: Asegúrate de que la API de JavaScript de ACF se encuentre correctamente encolada en el código de tu bloque personalizado.

Comments are closed.