[bash] Export wordpress posts as pdf without plugin

Install wkhtmltopdf:

apt-get install wkhtmltopdf

From phpmyadmin, export permalinks as CSV, use this SQL query:

SELECT `post_name` FROM `wp_posts` WHERE `post_type` = 'post' AND `post_status` = 'publish';

Copy the script, change filename, wp base url and output directory:

#!/bin/bash

# Input file
filename='wp_posts.csv'

# Wordpress base url
wp='http://blog.chemel.fr/'

# Ouput dir
directory='./dump/'

mkdir -p $directory

while IFS=$'\n\r' read -r permalink
do
    if [ ! -f $directory$permalink.pdf ]; then

        echo $wp$permalink

        wkhtmltopdf $wp$permalink $directory$permalink.pdf
    fi
done < "$filename"

Set permission and execute:

chmod +x wordpress2pdf.sh

./wordpress2pdf.sh

Done.

If you don’t have access to the mysql database you can crawl the sitemap.xml. See this script: https://github.com/chemel/blog2pdf

Supprimer les commentaires avec des liens dans wordpress

Pas très performant mais efficace au final:

DELETE FROM `wp_comments` WHERE `comment_approved` = 0 AND `comment_content` LIKE "%<a%href=%";
DELETE FROM `wp_comments` WHERE `comment_approved` = 0 AND `comment_content` LIKE "%http://%";
DELETE FROM `wp_comments` WHERE `comment_approved` = 0 AND `comment_content` LIKE "%[url=%";

Difficile de lutter contre les spammers.

Remplacement de contenu sur WordPress

Je suis passé de SyntaxHighlighter à CodeColorer et pour cela j’ai du changé toute mes balises “pre” en “code”

En deux requêtes SQL rapidement:

UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, '<pre', '<code');
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'pre>', 'code>');

CodeColorerSyntaxHighlighter

Autre exemple pour supprimer les tags “more”

UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, '&lt;!--more--&gt;', '');

Je ne reçois pas les mails avec Contact Form 7 pour WordPress

Contact Form 7 est un plugin WordPress qui permet de créer un formulaire de contact très rapidement : installer et c’est fait (et en plus il y a de l’ajax).

Problème : Je ne reçois pas les mails lorsque quelqu’un soumet le formulaire! Voici un petit soucis qui peut vite devenir une grosse prise en tête, surtout pour quelqu’un qui a du mal de réfléchir, je serais tenter de dire : “ça marche pas, t’en pis je change de plug-in” !

Don’t panic, je vais donner la solution :

Message body

Les deux premières lignes du message body sont prise dans le header du message : et ça il aime pas!

From: [your-name] <[your-email]>
Subject: [your-subject]

Message Body:
[your-message]

Je change donc par:

De la part de [your-name] <[your-email]>
Au sujet de [your-subject]

Son message:
[your-message]

Et là ça passe comme une lettre à la poste 😉

Update 2016: Le problème à été corrigé depuis, si vous ne recevez pas les messages c’est que le problème vient d’ailleurs