Hack WordPress
Contingut
Canviar la data d'un post
Un post té múltiples entrades en la taula wp_posts, corresponents a l'entrada primeres més les revisions posteriors i els autosave.
mysql> desc wp_posts;
Si vull modificar tots els posts associats a un post_pare a la mateixa data:
mysql> select ID, post_date,post_date_gmt,post_modified,post_modified_gmt,post_name,post_parent from wp_posts where post_title='titol_post'; mysql> update wp_posts set post_date='2008-12-28',post_date_gmt='2008-12-28',post_modified='2008-12-28',post_modified_gmt='2008-12-28' where post_title='titol_post';
Si només vull modificar el post original, buscaré per post_parent=0:
mysql> update wp_posts set post_date='2008-12-28',post_date_gmt='2008-12-28',post_modified='2008-12-28',post_modified_gmt='2008-12-28' where post_title='titol_post' and post_parent=0;
Sobre la traducció al català/castellà...
Al final agafo com a tema de referència un que es diu curved-10.
No és veritat que després d'instal.lar el wordpress en català estigui tot en català. Concretament, les plantilles també s'han de traduir. Això ho faig a pèl. Per exemple, No Comments es tradueix per Sense comentaris, i això ho faig cercant aquesta informació directament en els fitxers.
Més complicat és el format de la data que la canvio en la zona d'administració i no em fa cas. Això és perquè les plantilles estan ficades de forma absoluta. La manera de procedir és buscar en el codi font, després buscar en el fitxer php directament i identificar el que he de substituir. Finalment veig que he de substituir
<?php the_time('F jS, Y') ?> per <?php the_time('j F Y') ?> en els fitxers themes/curved-10/index.php, themes/curved-10/search.php i themes/curved-10/single.php
Això s'haurà de fer amb tot: Leave a Reply, logged as..., etc.
Treballar en local i en remot
NOTA: tot aquest tema s'ha evitat editant el fitxer /etc/hosts. Ara ja puc fer www.joanillo.org en local
El wordpress només pot estar configurat en local o en remot. Estic fent referència, dins de la zona d'administració (wp-admin/options-general.php), als valors Adreça del WordPress i Adreça del blog, que no tenen perquè coincidir. Si poso http://localhost/blog no puc accedir remotament, i si poso http://wikijoan.dyndns.org/blog no puc accedir localment.
Fent una cerca pel Google, sembla ser que efectivament no es pot treballar en els dos modes, la qual cosa per a mi és un inconvenient greu. Algú apunta a què el router es pot configurar per treballar en mode loopback, que permetria fer http://wikijoan.dyndns.org/blog des de dins de la xarxa (ho he de mirar).
Una altra possibilitat que jo he trobat és tocar directament els paràmetres d'una forma que sigui fàcil i còmoda. Investigant una mica veig que aquesta informació es guarda directament en la base de dades.
$ mysql -u root -p mysql> use blog mysql> select option_name from wp_options; mysql> select option_name,option_value from wp_options where option_name='home'; mysql> select option_name,option_value from wp_options where option_name='siteurl';
Puc modificar directament aquests valors. Per fer-ho còmode, he de crear un script i un accés directe al script en l'escriptori amb la connexió al mysql, execució de les dues comandes, i desconnexió.
Per treballar localment, fitxer wp_local.sql:
update wp_options set option_value='http://localhost/blog' where option_name='home'; update wp_options set option_value='http://localhost/blog' where option_name='siteurl';
i per treballar remotament, fitxer wp_remot.sql:
update wp_options set option_value='http://wikijoan.dyndns.org/blog' where option_name='home'; update wp_options set option_value='http://wikijoan.dyndns.org/blog' where option_name='siteurl';
El problema és que quan treballi localment ningú es podrà connectar remotament, i un blog té per finalitat que tothom s'hi pugui connectar!
Automatitzem aquesta tasca mitjançant dos scripts php que s'executaran a http://localhost o http://www.empresalibre.org o http://wikijoan.dyndns.org.
fitxer blog_local.php:
<?php
exec("mysql -u root -p**** blog < /home/joan/copia_seguretat/scripts/wp_local.sql");
echo "el blog funciona en local";
?>
fitxer blog_remot.php:
<?php
exec("mysql -u root -p**** blog < /home/joan/copia_seguretat/scripts/wp_remot.sql");
echo "el blog funciona en remot";
?>
i els scripts són els que hem vist més amunt
Nota: Després de diversos canvis, ara ja puc accedir al blog remotament mitjançant http://blog.empresalibre.org. Això implica un canvi en les comandes que s'executen en el fitxer wp_remot.sql:
update wp_options set option_value='http://blog.empresalibre.org' where option_name='home'; update wp_options set option_value='http://blog.empresalibre.org' where option_name='siteurl';
Problema en les imatges
El problema està en què quan faig un upload d'una imatge (continguda en un post) en local o en remot, es queda emmagatzemada la referència absoluta de la imatge. La conseqüència és que si faig el upload en local, no es veu en remot. I a l'inversa. La solució és integrar en els scripts wp_remot.sql, wp_130.sql i wp_local.sql les següents instruccions:
update wp_posts set post_content=REPLACE(post_content, 'http://192.168.1.130/blog/wp-content/uploads', 'http://www.empresalibre.org/blog/wp-content/uploads'); # update wp_posts set post_content=REPLACE(post_content, 'http://www.empresalibre.org/blog/wp-content/uploads', 'http://192.168.1.130/blog/wp-content/uploads'); # update wp_posts set post_content=REPLACE(post_content, 'http://www.empresalibre.org/blog/wp-content/uploads', 'http://localhost/blog/wp-content/uploads'); update wp_posts set post_content=REPLACE(post_content, 'http://blog.empresalibre.org/wp-content/uploads', 'http://192.168.1.130/blog/wp-content/uploads'); update wp_posts set post_content=REPLACE(post_content, 'http://blog.empresalibre.org/wp-content/uploads', 'http://localhost/blog/wp-content/uploads');
creat per Joan Quintana Compte, gener 2009