Hola,
Para eliminar se usa delete_post_meta aunque si tu CPT no tiene revisiones puedes usar delete_metadata.
Una posibilidad es que uses delete_metadata con $delete_all = true
delete_metadata( string $meta_type, int $object_id, string $meta_key, mixed $meta_value = '', bool $delete_all = false )
como veras te pide el post_id (es la variable $object_id ) pon 0 y listo, te eliminara de una tajada todas las metas que coincidan con $meta_key
Tienes que vigilar que si hay muchos post de tu post type o muchas metas, podrias saturar un servidor con pocos recursos, si piensas que podria pasar, tendrias que hacer una pre-desintalacion y si sale todo ok, lo desintalas por codigo o que el usuario haga el paso. Es solo una recomendacion.
Te recomiendo que mires https://developer.wordpress.org para buscar y ver que hace cada funcion, etc… Es un buen recurso cuando te encuentras como en este caso.
-
Esta respuesta fue modificada hace 5 años, 10 meses por kallookoo. Razón: Corregir texto
Añado que si te defiendes con las consultas a la base de datos tambien podrias eliminar los posts y metas.
Iniciador del debate
Enery88
(@enery88)
Lo cierto es que se podría hacer con una consulta a la bbdd, pero no quería forzarlo hasta ese punto. Muchísimas gracias por tu ayuda me ha sido muy útil!! 🙂
Releyendo tu pregunta aclaro algunos puntos.
Cuando lo ley, lo hice un poco rapido y me centre en las meta.
1. Si estas usando wp_delete_post tambien borra las meta, y te recomiendo que pongas en true el ultimo argumento llamado $force_delete
, Evita el uso de la papelera.
wp_delete_post( int $postid, bool $force_delete = false )
2. Es peor el metodo wp_delete_post que una sola consulta, para eliminar todo tu contenido. Porque? Pues basicamente porque:
– Haces una consulta a la DB para conseguir las ID de tus posts
– Haces entre 3 o 5 consultas* a la DB por cada post que tengas creado.
*Mas o menos, no me he parado a contarlas todas y es variable dependiendo del tipo de post.
Ejemplo considerando que hay 5 (sub)consultas:
Una consulta para conseguir las IDs con el resultado de 500 posts.
( 500*5 ) = 3000 consultas
Total de consultas 3001