• Resuelto Enery88

    (@enery88)


    Estoy desarrollando un plugin gratuito para wordpress y tengo una duda a la hora de desinstalar el plugin. El plugin crea un custom post type, y unos custom fields que se guardan en postmeta. He visto que hay varias funciones, pero me hago un poco de lío.

    Mi duda es: Si lo que quiero es eliminar estos custom fields de la bbdd, ¿ la función que debería usar es delete_post_meta() ?

    Pregunto porque también he visto la función delete_metadata(), y hacen lo mismo, no?

    Gracias por vuestro tiempo y ayuda.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Moderador kallookoo

    (@kallookoo)

    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
    Moderador kallookoo

    (@kallookoo)

    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!! 🙂

    Moderador kallookoo

    (@kallookoo)

    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

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘Como eliminar los custom field de la bbdd al desinstalar un plugin’ está cerrado a nuevas respuestas.