WordPress y SQL: agregar un campo personalizado a todas las publicaciones

2 minutos de lectura

Necesito una consulta SQL que pueda ejecutar en PHPmyadmin que agregue un campo personalizado (con un valor) a todas las publicaciones existentes. ¿Alguien puede ayudar? ¿Es esto posible?

avatar de usuario
windyjonas

Puede hacer esto insertando en la tabla postmeta mediante una consulta de selección en la tabla de publicaciones.

En el siguiente ejemplo, uso wp_ como prefijo de mi tabla, su configuración puede diferir.

insert into wp_postmeta (post_id, meta_key, meta_value) 
select ID, 'my-key', 'my-value' from wp_posts where post_type="post";

  • obras. ¡Gracias! ¿Hay alguna forma de verificar si existe la clave meta para no agregar duplicados?

    – Alex

    30 de junio de 2010 a las 0:04

  • Funcionó perfectamente. Solo quería agregar una pequeña actualización ya que esta declaración agrega el postmeta para cada elemento, incluidos los archivos adjuntos, las páginas, etc. Agregué una declaración DONDE al final para que solo agregue la clave para las publicaciones: insert into wp_postmeta (post_id, meta_key, meta_value) select ID, 'my-key', 'my-value' from wp_posts WHERE post_type = 'post'

    – gofre

    26 mayo 2011 a las 16:20

avatar de usuario
Juan P Bloch

Sí, esto es posible, pero es desaconsejable. Sus datos podrían perderse la próxima vez que actualice. Si no planea actualizar, entonces está dejando brechas de seguridad en su sitio. La forma recomendada de hacer esto es usar la tabla postmeta. Para eso existe.

EDITAR

Ahora que entiendo mejor la pregunta, ignore la parte anterior. Ver comentarios para más detalles.

  • No califiqué tu respuesta. No tengo una cuenta aquí, así que ni siquiera puedo hacer eso de todos modos 🙂

    – Alex

    29 de junio de 2010 a las 15:31

  • Creo que Alex quiere decir cómo puede crear campos personalizados de WordPress (que usarían el postmeta table) con SQL, en lugar de cómo puede agregar nuevas columnas a la tabla de publicaciones (que parece ser cómo lo has interpretado, John). Sin embargo, el voto negativo parece poco caritativo. En cuanto a tu pregunta Alex, no creo que puedas hacer esto usando una sola instrucción SQL, necesitarías recuperar todas las ID de publicación y luego agregar una fila a la postmeta tabla para cada publicación que contenga los datos de su campo personalizado.

    – Ricardo M.

    29 de junio de 2010 a las 16:07


  • ah Creo que tienes razón, Ricardo. FWIW, Alex, nunca pensé que lo habías rechazado. En general, las personas que hacen preguntas están interesadas en encontrar la respuesta y se comunicarán antes de votar. El ‘tú’ en mi comentario debería tener todos los pronombres impersonales.

    – John P Bloch

    29 de junio de 2010 a las 16:53

  • Ricardo tiene razón. No parece haber una forma de usar SQL para hacer esto. Sugeriría usar un script de complemento que se pueda ejecutar desde el área de administración para hacer lo que Richard sugirió.

    – John P Bloch

    29 de junio de 2010 a las 16:54

¿Ha sido útil esta solución?