| |||
Añadir meta_key a 1200 entradas a la vez Buenas, leyendo por los foros he conseguido crear, en la pagina de creacion/edicion de entradas, una casilla de verificacion (checkbox) que al marcarla le añade al articulo un meta_key llamado _portada . Luego en el index del theme con el código query_posts('meta_key=_portada'); hago que solo se muestren en la portada las entradas que lleven ese meta_key. Eso va perfecto para un blog nuevo ya que cada vez que creas una entrada decides, marcando el checkbox, si quieres que aparezca en la portada o no.... pero el problema lo tengo en mi blog wordpress ya que tengo mas de 1200 entradas y todas ellas no tienen el checkbox marcado; por lo tanto no tienen el meta_key, alser anteriores a la creacion del codigo. Ahora he de ir editando las entradas una a una para marcar el checkbox ya que quiero que todas las entradas antigüas salgan en la portada paginadas. Es un trabajo de chinos. A alguien se le ocurre alguna forma de añadir el meta_key _portada a todas las entradas de una vez?. Gracias Última edición por mikelinos; 25/09/2013 a las 00:25 |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez wordpress se basa en una base de datos, la estructura de la cual desconozco, pero siendo así será fácil localizar la tabla que guarda las entradas y el campo que guarda el checkbox:
Código MySQL:
Ver original Te conectas via phpmyadmin u otro cliente de mysql a la base de datos y ejecutas esa consulta.
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. Última edición por quimfv; 25/09/2013 a las 06:14 |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez Gracias por la respuesta y con ella has abierto la puerta por la que realizar lo que pretendo pero no funcionará. Me explico, el porner el valor 1 al checkbox de todas las entradas no soluciona todo el problema ya que solo se generará el meta_key _portada cuando entre en la pantalla edición de cada una de las entradas por lo que estaré en la misma situación...pego el código para que se vea todo el proceso.
Código PHP:
El código no es mio, es de Felix de http://blog.corunet.com/seleccionar-que-posts-mostrar-en-wordpress/#more-130Ver original Yo entiendo que el proceso es el siguiente: Nueva entrada (el checkbox por defecto sale sin marcar)--> si marcas el checkbox al guardar la entrada se crea el meta_key ="_portada", y si el checkbox está desmarcado no hace nada. Edición de una entrada ya creada--> al abrirla se comprueba el estado del checkbox... si está marcado genera el meta_key="_portada" y si el checkbox está desmarcado borra el meta_key="_portada". Haciendo la consulta que me propones para que quede el checkbox de todas las entradas esten marcados "1" no se generará el meta_key ="_portada" hasta que entre en la pantalla de edición de entradas. Entonces quizás la solución pase por hacer una consulta en la que se de el valor "1" a los ckeckbox y que además añada el meta_key="_portada" a todas las entradas. (corrígeme si me equivoco). El problema es que he estado mirando la base de datos y no se que tablas son las que contienen los valores de la consulta. Si alguien que conozca el sistema de tablas de wordpress puede decirme cual seria la consulta exacta sql que he de hacer para conseguir mi proposito le estaría enormemente agradecido. Última edición por mikelinos; 25/09/2013 a las 06:38 |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez Los sistemas basados en una base de datos todo lo que crean o no crean lo hacen en función de lo que esta guardado en la bbdd. Luego los meta_keys también, es decir cuando se presenta la portada, hay un script que hace una consulta a la base de datos para obtener que debe mostrar en la portada, sean posts o meta_keys... si lo que sale en la portada depende solo de ese checkbox luego la solución es la que te di. Viendo el código que has pasado yo buscaría el código de la classe WP_query donde podrás ver como consulta los post de portada. Y el código de la función add_post_meta($post_id, '_portada', '1') donde verás que modificación hace sobre la base de datos para agregar un meta al post... (Ahora viendo los parametros de esta última función, te sugeriria que busques una tabla de meta_keys, fijate que la función recibe el id del post y el meta_key.... como el número de meta_keys de un post debe ser N la solución es guardarlos en una tabla aparte)... Si es el caso
Código MySQL:
Ver original esto crearia el meta_key de todos tus post... 1200 post quieres poner en portada????
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. Última edición por quimfv; 26/09/2013 a las 01:29 |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez Utilizando esta consulta puedo añadir perfectamente el meta:key
Código MySQL:
Ahora solo necesito crear una cosnsulta que vaya extrayendo las post_id de los post de la tabla wp_posts y les vaya añadiendo el meta_keyVer original Señalar que la tabla wp_posts el indice de los posts es ID, no encuentro el campo post_id por ningun lado de la estructura |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez Si eso inserta el meta_key _poratada al post 20192 luego Cita: ...Señalar que la tabla wp_posts el indice de los posts es ID...
Código MySQL:
Ver original esto insertará un meta_key para cada post de la tabla wp_posts.... Si usas la clausula WHERE <condicion> incluso podrias seleccionar los posts en función de alguna característica....
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. |
| |||
Respuesta: Añadir meta_key a 1200 entradas a la vez Gracias Quimfv, has dado en el clavo!!, ha funcionado de cine y me he ahorrado horas de curro. Repito muchas gracias, moltes gràcies!! Última edición por mikelinos; 29/09/2013 a las 17:54 |
Etiquetas: |