Hace ya algún tiempo , que @punk y otras personas hablaron en las reuniones que seria buena idea, recordar algunos artículos «viejunos» que se han estado publicando en elbinario, desde sus inicios, para darlos a conocer, puesto que muchos de ellos todavía siguen estando en vigor y a mucha gente podría interesarles, así que pensando que podría ser interesante la idea nos pusimos a ello.:
Sacando los artículos que nos interesan de nuestro wp Para empezar no queremos publicar todos los artículos, solo los de algunas categorías concretas, por lo que lo primero que necesitamos es averiguar los id de esas categorías en nuestra BD, a partir de las version 2.3 wp introduce cambios en la manera de almacenar las categorías de los artículos, por lo que para buscar una categoría en concreto necesitamos realizar la siguiente consulta, dentro de nuestra BD:
select term_id,name,slug from wp_terms where slug='CATEGORIA';
donde CATEGORIA es el nombre de la categoría que estamos buscando
Nos tenemos que quedar con el «term_id» que sera el identificador que necesitaremos para cruzar con join, nuestras tablas wp_posts,wp_terms y wp_term_relationships, para obtener la lista de post que queramos filtrando por esa categoría, tenéis mas info, sobre el contenido de estas tablas en https://codex.wordpress.org/WordPress_Taxonomy
Ahora que tenemos claro cuales son los term_id que necesitamos(ojo cuando realizamos la anterior consulta no muestra solo las categorías, también los tags, por lo que si tenemos categorías con el mismo nombre que el tag, tendremos que hacer consultas a la tabla wp_term_taxonomy con el id para obtener el correcto, como podemos ver a continuación:
select * from wp_term_taxonomy where term_id='19';
Si tenemos el valor «category» en el campo taxonomy vamos bien.
Ahora salimos de nuestra BD y ejecutamos desde el terminal la siguiente consulta:
mysql -u USUARIO -p BASE-DATOS -e "select post_title, concat('https://URL_SITIO/',post_name) from wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE 1 AND wp_term_taxonomy.term_id in(ID,ID,ID) and post_status='publish' and post_type='post'" > ARCHIVO_SALIDA
Esta consulta toma todos los posts publicados, y nos saca el titulo y la url completa en un archivo de texto, filtrando por las categorías que le hemos indicado. Para entender la consulta necesitamos comprender la relación de las tablas entre si, para saber como las hemos cruzado https://codex.wordpress.org/WordPress_Taxonomy para el ejemplo nos basta con saber que el campo ID de la tabla de posts(wp_posts) se cruza con el object_id de la tabla de (wp_term_relationships) y el id resultante lo consultamos en wp_term_taxonomy para sacar nuestra categoría.
Los parámetros en MAYUSCULAS tendréis que cambiarlos por los vuestros.
Borramos los repetidos
awk '!seen[$0]++' posts.txt >> posts_mod.txt
Ahora que tenemos todos los posts en un archivo, podemos por ejemplo publicarlos en social usando curl como indica la wiki http://wiki.gnusocial.net/doku.php?id=api_documentacion
Por ejemplo:
#!/bin/bash
origen="posts_mod.txt"
quit=$(cat $origen |shuf |tail -1)
publicador="$(curl --insecure -u usuario:password https://gnusocial.net/api/statuses/update.xml -d status="$quit")"
echo $publicador
El comando shuf, lo que hace es «barajar» las lineas del fichero, para mostrarnos una de manera aleatoria.
Así que con este invento, desde la cuenta de @elbinario os recordaremos artículos «viejunos» que escribimos hace tiempo, por si os puedan interesar.