Añadir foto destacada en un formulario ACF en la web

En este artículo vemos como guardar un campo de imagen de ACF como imagen destacada en un formulario en el front-end.


por

Cuando trabajamos con Advanced Custom Fields por ejemplo, para añadir campos personalizados a un Custom Post Type, una de las opciones que podemos utilizar, según el tipo de proyecto que tengamos entre manos, es el añadir un formulario en la parte pública de la web para editar o añadir registros con acf_form().

Este sería el ejemplo que utilizan en la documentación oficial para añadir un formulario que de de alta nuevos registros de un CPT:

<?php acf_form_head(); ?>
<?php get_header(); ?>
<div id="primary" class="content-area">
    <div id="content" class="site-content" role="main">
    <?php while ( have_posts() ) : the_post(); ?>
    <?php acf_form(array(
        'post_id'       => 'new_post',
        'new_post'      => array(
            'post_type'     => 'event',
            'post_status'   => 'publish'
        ),
        'submit_value'  => 'Create new event'
    )); ?>
    <?php endwhile; ?>
    </div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Además, tenemos dos parámetros adicionales para indicar si queremos que en el formulario se muestre los campos para el título y el contenido, ambos campos nativos de WordPress:


<?php acf_form(array(
        'post_id'       => 'new_post',
        'new_post'      => array(
            'post_type'     => 'event',
            'post_status'   => 'publish'
        ),
        'post_title'    => false,
        'post_content'  => false,         
        'submit_value'  => 'Create new event'
    )); ?>

Con ‘post_title‘ y ‘post_content‘, podemos indicarle si queremos mostrar estos dos campos en el formulario.

Pero, ¿que pása con la imagen destacada?

La imagen destacada es un campo nativo de WordPress que no podemos mostrar en un formulario de ACF para añadir nuevos registros, y el problema es que aunque creemos un campo de imagen para sustituir la funcionalidad de ese campo y mostrarla manualmente en la plantilla que preparemos para ese CPT, si utilizamos por ejemplo, una plantilla archive, no mostrara esa foto ya que no quedará asociada a la imagen destacada.

Si por la razón que sea, necesitamos que el usuario desde front-end pueda subir una imagen al formulario de ACF y que quede registrada como featured image o imagen destacada de ese post, sólo tenemos que tenerlo en cuenta a la hora de crear ese grupo de campos y asignarle como Nombre del campo «thumbnail_id«

De esta forma, al ser un campo de ACF, se mostrará en el formulario que mostremos con acf_form(), pero a la vez al guardarlo quedará registrada como imagen destacada de esa entrada.

No es muy intuitivo… pero una vez lo sabes es fácil y práctico 😉

Si estás interesado en sacarle partido a Advanced Custom Fields, en la Zona DPW tienes un curso donde lo estamos viendo a fondo.

Comentarios

2 respuestas a «Añadir foto destacada en un formulario ACF en la web»

  1. Avatar de Orlando

    |

    Muchas gracias, varios días partiendome el coco y halle la solución gracias a ti. ¿Tienes algun canal en youtubepara suscribirme?

    1. Avatar de esther

      |

      Hola Orlando! Muchas gracias, me alegro que te haya servido.
      Sí tengo un canal de youtube, pero con pocos videos que complementan algunos posts del blog, no soy muy activa en él 😉
      https://www.youtube.com/channel/UCKa3Pzzqyc1DNc06oBBsVbQ

      Saludos!