Utilisation avancée de Wordpress

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Wordpress c'est génial, mais on y trouves également des limitations qui peuvent devenir vite génantes. Il existe également des moyens de les contourner, c'est ce que je vais expliquer ici.

2 Configuration Nginx

Pour la configuration de Wordpress sous Nginx, voici un exemple :

Configuration File /etc/nginx/sites-available/blog.deimos.fr
server {
    include listen_port.conf;
    listen 443 ssl;
 
    ssl_certificate /etc/nginx/ssl/deimos.fr/server-unified.crt;
    ssl_certificate_key /etc/nginx/ssl/deimos.fr/server.key;
    ssl_session_timeout 5m;
 
    server_name blog.deimos.fr;
    root /usr/share/nginx/www/deimos.fr/blog;
    index index.php;
 
    access_log /var/log/nginx/blog.deimos.fr_access.log;
    error_log /var/log/nginx/blog.deimos.fr_error.log;
 
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
    location ~ \.php$ {
        fastcgi_cache mycache;
        fastcgi_cache_key $request_method$host$request_uri;
        fastcgi_cache_valid any 1h;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_intercept_errors on;
    }
 
    # Drop config
    include drop.conf;
 
    # BEGIN W3TC Browser Cache
    gzip on;
    gzip_types text/css application/x-javascript text/x-component text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    location ~ \.(css|js|htc)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
    }
 
    location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ {
        expires 3600s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
    }
 
    location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
        add_header X-Powered-By "W3 Total Cache/0.9.2.4";
    }
    # END W3TC Browser Cache
 
    # BEGIN W3TC Minify core
    rewrite ^/wp-content/w3tc/min/w3tc_rewrite_test$ /wp-content/w3tc/min/index.php?w3tc_rewrite_test=1 last;
    rewrite ^/wp-content/w3tc/min/(.+\.(css|js))$ /wp-content/w3tc/min/index.php?file=$1 last;
    # END W3TC Minify core
}
}

3 Utilisation d'un javascript dans un post

Je souhaites ici utiliser un javascript pour éviter que mon adresse mail soit prise en compte par les robots de spammeurs. Nous devons d'abord insérer ceci dans un post :

Configuration File
<script type="text/javascript" src="/scripts/updatepage.js"></script><script type="text/javascript">
<!--

Puis notre code javascript :

Configuration File
emailE=('[email protected]' + 'deimos.fr')
document.write('<A href="mailto:' + emailE + '">' + "cliquer ici" + '</a>')

Et pour finir, on appelle notre fonction :

Configuration File
updatepage();
//--></script>

Ce qui nous donne au final avec la totalité du système antispam :

Configuration File
<script type="text/javascript" src="/scripts/updatepage.js"></script><script type="text/javascript">
<!--
emailE=('deimos' + 'deimos.fr')
document.write('<A href="mailto:' + emailE + '">' + "cliquer ici" + '</a>')
updatepage();
//--></script>
 
<span><NOSCRIPT>
    <em>Email address protected by JavaScript.<BR>
    Please enable JavaScript to contact me.</em>
</NOSCRIPT></span>

4 Ajouter des extensions non supportées

J'ai par exemple envie d'activer le format ogv pour mon blog. Et il va me falloir pour ça modifier le fichier wp-includes/functions.php et ajouter ces lignes :

Configuration File usb_locker.avi
...
function wp_ext2type( $ext ) {
    $ext2type = apply_filters('ext2type', array(
        'audio' => array('aac','ac3','aif','aiff','mp1','mp2','mp3','m3a','m4a','m4b','ogg','ram','wav','wma'),
        'video' => array('asf','avi','divx','dv','mov','mpg','mpeg','mp4','mpv','ogm','qt','rm','vob','wmv', 'm4v','ogv'),
        'document' => array('doc','docx','pages','odt','rtf','pdf'),
...
    if ( !$mimes ) {
        // Accepted MIME types are set here as PCRE unless provided.
        $mimes = apply_filters( 'upload_mimes', array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
        'bmp' => 'image/bmp',
        'tif|tiff' => 'image/tiff',
        'ico' => 'image/x-icon',
        'asf|asx|wax|wmv|wmx' => 'video/asf',
        'avi' => 'video/avi',
        'divx' => 'video/divx',
        'flv' => 'video/x-flv',
        'ogv' => 'video/ogg',
        'mov|qt' => 'video/quicktime',
...

Il y a donc 2 endroits à modifier : la fonction wp_ext2type et la fonction get_allowed_mime_types.

5 Supprimer automatiquement les commentaires dans la corbeille

Il est possible de supprimer automatiquement après un certain nombre de jours défini, les commentaires présents dans la corbeille. Editez votre configuration Wordpress et ajoutez ceci :

Configuration File wp-config.php
[...]
/* Vider la corbeille */
define('EMPTY_TRASH_DAYS', 2 );
[...]

Ici, j'ai indiqué que je souhaitais que la corbeille se vide d'elle même tous les 2 jours.

6 FAQ

6.1 Failed to write file to disk

J'ai eu ce petit problème lorsque j'ai voulu uploader des fichiers un peu trop volumineux. Voici les différentes solutions pour régler le problème :

  • Vérifier les droits du propriétaire et d'écriture sur le dossier upload
  • Regarder dans le fichier /etc/php5/cgi/php.ini et ajuster la taille qui vous convient :
Configuration File /etc/php5/cgi/php.ini
post_max_size = 50M
upload_max_filesize = 50M

  • Regarder la taille du /tmp sur votre serveur (par exemple mes vservers sont de base à 16M ce qui me posait problème puisque c'est le lieu temporaire ou wordpress stocke ses fichiers)

7 Ressources

http://codex.wordpress.org/Using_Javascript