Antes de nada tengo que decir que WP All Import es un plugin que me parece estupendo para realizar casi cualquier tipo de importaciones a WordPress. Es una herramienta que no puede faltar en muchas instalaciones.
En este caso tenemos un pequeño problema a la hora de importar los nuevos posts de un CPT personalizado pero lo que lo hace diferente es que tenemos que tener en cuenta 2 campos personalizados que juntos formaría una clave única que no se puede repetir en el CPT para que no haya duplicados.
Nos ponemos en situación:
Tenemos un CPT «Proyecto». Éste CPT tiene, entre otros, dos campos:
- CIF
- Número de proyecto.
El caso es que, como comentaba antes, de debe existir un proyecto en el que coincidan los valores de estos campos.
Una parte de esto corresponde a los datos que se importarán a través de WP All Import, esta parte es sencilla porque WP All Import nos permite establecer un código único y no importar duplicados que estén en el fichero que importamos.
Pero la otra parte, que es para lo que sirve este post, es que, antes de importar cada fila del fichero, debemos comprobar que no exista ningún «proyecto» publicado que coincida con esos dos campos en el fichero de importación.
Para ello utilizaremos el hook «wp_all_import_is_post_to_create» de WP All Import como se puede ver en el siguiente código:
Como podemos ver en el código, lo primero que hacemos es establecer que sólo se ejecute si el ID del import es «142». Así nos aseguramos de que no se ejecute con cualquier import.
Posteriormente creamos 2 variables para almacenar el nombre de los campos personalizados de ACF y poder usarlos dentro de la WP_Query
Justo después hacemos lo propio con los campos correspondientes del fichero de importación que obtenemos a través del array $data. De esta forma:
$cif_csv = $data['cif'];
$proyectnumber_csv = $data['projectnumber'];
Posteriormente creamos la consulta WP_Query cuyos argumentos de la meta query establecen que se busquen los posts que coincidan con esos dos campos. Si existe algún post que coincida con los valores de esos campos, nos saltamos esa columna y no se importará puesto que ya existe en WordPress.
No hay más que decir.
Fácil, sencillo y para toda la familia.
Espero que sea de utilizad.
Saludos y mucho ánimo!