Salut les amis. De retour de vacances, je vous fais un petit article pour partager avec mes amis blogueurs quelques bouts de code (snippets) pour WordPress permettant de customiser un peu ce super outil. L’article original est cité en bas du mien (d’article), mais je me suis permis de faire un peu le tri pour vous, en vous sélectionnant 20 requêtes que j’ai trouvées particulièrement utiles et/ou intéressantes.
On va commencer par le petit warning qui va bien : ne modifiez pas le code de WordPress sans avoir auparavant réalisé une sauvegarde de vos fichiers. Ce serait dommage de niquer votre thème si soigneusement paramétré juste pour une erreur bidon.
1- Augmenter la mémoire de WordPress
Si vous avez plein de plugins, ou plein de trafic, vous pourriez avoir besoin d’augmenter la mémoire de WordPress. Pour cela ajoutez cette ligne à votre fichier wp-config:
define('WP_MEMORY_LIMIT', '96M');
2- Vider la corbeille automatiquement
Permet de vider la corbeille de WordPress tous les X jours:
define('EMPTY_TRASH_DAYS', 5 );
3- Forcer le mode maintenance
Si vous avez besoin de travailler sur votre blog en ligne, passez le en mode maintenance en ajoutant ces lignes:
function maintenace_mode() { if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) { die('Maintenance.'); } } add_action('get_header', 'maintenace_mode');
A commenter dès que vous voulez que votre site soit à nouveau disponible.
4- Limiter le nombre de révisions d’un article
Dès que vous rédigez un article, son historique est sauvegardé. Vous pouvez limiter le nombre de révisions pour ne pas surcharger votre base:
# Maximum 5 revisions # define('WP_POST_REVISIONS', 5); # Pour enlever cette limite # define('WP_POST_REVISIONS', false);
5- Choisir la fréquence de sauvegarde auto de vos articles
Vous pouvez modifier votre fichier wp-config.php en choisissant la fréquence de sauvegarde lors de la rédaction d’un article. Super utile:
# Attention intervalle en secondes... ici pour 5 minutes # define('AUTOSAVE_INTERVAL', 300);
6- Une date de copyright dynamique dans le footer
Ce code vous évite de modifier votre footer à la main pour la date de copyright :
function comicpress_copyright() { global $wpdb; $copyright_dates = $wpdb->get_results(" SELECT YEAR(min(post_date_gmt)) AS firstdate, YEAR(max(post_date_gmt)) AS lastdate FROM $wpdb->posts WHERE post_status = 'publish' "); $output = ''; if($copyright_dates) { $copyright = "© " . $copyright_dates[0]->firstdate; if($copyright_dates[0]->firstdate != $copyright_dates[0]->lastdate) { $copyright .= '-' . $copyright_dates[0]->lastdate; } $output = $copyright; } return $output; }
Ensuite, ajoutez juste cette ligne dans votre footer :
echo comicpress_copyright();
7- Google Analytics automatique (sans plugin)
Vous avez mis à jour votre thème il y a quelques semaines et vous rendez compte que vous avez oublié de remettre le tag Google Analytics… vous avez perdu vos stats ! Pour ne pas oublier ceci, voici comment intégrer automatiquement le code dans votre footer. Placez le code suivant avec les autre fonctions :
<?php add_action('wp_footer', 'ga'); function ga() { ?> // Collez votre code Google Analytics ici <?php } ?>
8- Changer la police de l’éditeur HTML
Vous pouvez modifier la police de caractère de l’éditeur HTML de WordPress en ajoutant ces lignes-ci à votre functions.php (à vous de modifier la police et le style):
function change_editor_font(){ echo "<style type='text/css'> #editorcontainer textarea#content { font-family: Monaco, Consolas, \"Andale Mono\", \"Dejavu Sans Mono\", monospace; font-size:14px; color:#333; } </style>"; } add_action("admin_print_styles", "change_editor_font");
9- Changer la langue pour la correction orthographique
Celle là est super utile pour moi. Plutôt que d’essayer de corriger votre bon français en mauvais anglais, voici comment forcer la langue du correcteur de WordPress :
function fb_mce_external_languages($initArray){ $initArray['spellchecker_languages'] = '+French=fr, English=en'; return $initArray; } add_filter('tiny_mce_before_init', 'fb_mce_external_languages');
10- surligner les termes recherchés
Cette fonction est utile pour permettre à vos internautes de retrouver les termes cherchés, en les surlignant. Pour cela, modifiez le fichier search.php et recherchez la fonction the_title(). Remplacez alors
echo $title;
par:
<?php <span style="white-space: pre;"> </span>$title <span style="white-space: pre;"> </span>= get_the_title(); <span style="white-space: pre;"> </span>$keys= explode(" ",$s); <span style="white-space: pre;"> </span>$title <span style="white-space: pre;"> </span>= preg_replace('/('.implode('|', $keys) .')/iu', <span style="white-space: pre;"> </span>'<strong class="search-excerpt">\0</strong>', <span style="white-space: pre;"> </span>$title); ?>
Et, au fichier style.css, il faudra ajouter la ligne suivante:
strong.search-excerpt { background: yellow; }
11- Ajouter un contenu automatiquement à chaque article
Vous pourriez vouloir avoir toujours un même message à la fin de chaque article, ou un questionnaire de satisfaction, ou encore un module d’inscription à une newsletter. Pour cela, il vous faut ajouter la fonction suivante :
function add_post_content($content) { if(!is_feed() && !is_home()) { $content .= ' //Mettez votre contenu ici '; } return $content; } add_filter('the_content', 'add_post_content');
12- Affichage d’articles aléatoires
Copiez ce code où vous voulez afficher vos articles. Cela permettra d’éviter que certains de vos vieux bons articles soient oubliés :
<ul><li><h2>Articles aléatories</h2> <ul> <?php $rand_posts = get_posts('numberposts=5&orderby=rand'); foreach( $rand_posts as $post ) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> </li></ul>
13- Gérer les commentaires sans passer par l’interface d’admin
Ce code vous permet de rajouter deux boutons (SPAM ou EFFACER) à coté de chaque commentaire pour vous permettre de les modérer directement à partir de votre blog; ajoutez ceci au fichier functions.php:
function delete_comment_link($id) { if (current_user_can('edit_post')) { echo '| EFFACER '; echo '| SPAM'; } }
et, après la fonction
edit_comment_link()
, collez ceci:
delete_comment_link(get_comment_ID());
14- Séparer les trackbacks des commentaires
Super utile pour garder une certaine cohérence dans vos commentaires :) Dans le fichier comments.php, remplacez ce code :
foreach ($comments as $comment) : ?> // Comments are displayed here endforeach;
par celui-ci :
<ul class="commentlist"> <?php //Commentaires seulement <span style="white-space: pre;"> </span>foreach ($comments as $comment) : ?> <span style="white-space: pre;"> </span><?php $comment_type = get_comment_type(); ?> <span style="white-space: pre;"> </span><?php if($comment_type == 'comment') { ?> <span style="white-space: pre;"> </span> <li>//Comment code goes here</li> <span style="white-space: pre;"> </span><?php } endforeach; </ul> <ul> <?php //Puis les trackbacks <span style="white-space: pre;"> </span>foreach ($comments as $comment) : ?> <span style="white-space: pre;"> </span><?php $comment_type = get_comment_type(); ?> <span style="white-space: pre;"> </span><?php if($comment_type != 'comment') { ?> <span style="white-space: pre;"> </span> <li><?php comment_author_link() ?></li> <span style="white-space: pre;"> </span><?php } endforeach; </ul>
15- mettre en évidence les commentaires des administrateurs
Ce point est assez intéressant mais prend toute sa valeur dans le cadre de blog géré par plusieurs admins. Modifiez le fichier CSS comme suit :
.commentlist .bypostauthor { /* -- bordure sombre - */ border: 1px #bbb solid; /* -- dégradé en css3 -- */ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#f5f5f5), to(#ddd)); background: -moz-linear-gradient(0% 100% 90deg,#ddd, #f5f5f5); /* -- et une petite ombre -- */ -webkit-box-shadow:0px 0 50px #ddd; -moz-box-shadow:0px 0 50px #ddd; box-shadow:0px 0 50px #ddd; }
16- Un bouton de partage Facebook et Twitter pour chaque article
Il suffit pour cela de modifier votre fichier functions.php en ajoutant ce code-ci:
function share_this($content){ if(!is_feed() && !is_home()) { $content .= '<div class="share-this"> <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal">Tweet</a> <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> <div class="facebook-share-button"> <iframe src="http://www.facebook.com/plugins/like.php?href='. urlencode(get_permalink($post->ID)) .'&layout=button_count&show_faces=false&width=200&action=like&colorscheme=light&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:200px; height:21px;" allowTransparency="true"></iframe> </div> </div>'; } return $content; } add_action('the_content', 'share_this');
17- Afficher un compteur Feedburner
Tout est dans le titre (remplacez YOU FEED ADDRESS par l’URL de votre flux RSS):
<?php $url = file_get_contents('https://feedburner.google.com/api/awareness/1.0/Get FeedData?uri=YOUR FEED ADDRESS'); $begin = 'circulation="'; $end = '"'; $page = $url; $parts = explode($begin,$page); $page = $parts[1]; $parts = explode($end,$page); $fbcount = $parts[0]; if($fbcount == '') { $fbcount = '0'; } echo '<b> '.$fbcount.' </b> Subscribers'; ?>
18- Afficher le nombre de followers Twitter
pareil que plus haut, pour Twitter (remplacez USERNAME par votre identifiant Twitter)
<?php $twit = file_get_contents('http://twitter.com/users/show/USERNAME.xml'); $begin = '<followers_count>'; $end = '</followers_count>'; $page = $twit; $parts = explode($begin,$page); $page = $parts[1]; $parts = explode($end,$page); $tcount = $parts[0]; if($tcount == '') { $tcount = '0'; } echo '<b> '.$tcount.' </b> Followers'; ?>
19- Afficher les articles liés
Il est toujours agréable pour vos lecteurs de pouvoir aller plus loin que l’article qu’ils viennent de lire, en leur proposant des articles similaires.
<?php $tags = wp_get_post_tags($post->ID); if ($tags) { echo 'Related Posts'; $first_tag = $tags[0]->term_id; $args=array( 'tag__in' => array($first_tag), 'post__not_in' => array($post->ID), 'showposts'=>1, 'caller_get_posts'=>1 ); $my_query = new WP_Query($args); if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php endwhile; wp_reset(); } } ?>
20- Afficher un bouton de don Paypal :)
Affiche un bouton Paypal pour les dons des gentils lecteurs (surtout pour les assos et les blogs caritatifs). Il suffit de remplacer « your-paypal-email-address » par l’adresse email détentrice du compte Paypal.
<?php function donate_shortcode( $atts, $content = null) { global $post;extract(shortcode_atts(array( 'account' => 'your-paypal-email-address', 'for' => $post->post_title, 'onHover' => '', ), $atts));</p> <p>if(empty($content)) $content='Faire un don'; return '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&<span id="IL_AD3" class="IL_AD">business</span>='.$account.'&item_name=Donation pour'.$for.'" title="'.$onHover.'">'.$content.'</a>'; } add_shortcode('donate', 'donate_shortcode'); ?>
Et voilà ! pour le reste, voyez la source de cet article (en anglais) ci-dessous :
source : WPMU.org

6 commentaires
Tweets that mention 20 codes utiles pour customiser Wordpress - (chez #geekpauvre de ) -- Topsy.com a écrit:
21 fév 2011
[...] This post was mentioned on Twitter by Florent Molinard and Léa PANAMA, Jack Ballajack. Jack Ballajack said: 20 codes utiles pour customiser WordPress – http://su.pr/25sxua #geekpauvre [...]
PS3 a écrit:
22 fév 2011
Très belle liste, merci bien ! ;)
Moi a écrit:
13 mar 2011
La fonction 16 renvoie une erreur…
kategriss@conseils blogging a écrit:
3 avr 2011
Merci pour cette super liste.
J’étais justement à la recherche de fonctions similaires à la 4 et 5, je vais les implémenter (car j’ai fait le ménage récemment dans ma BDD et en supprimant toutes les révisions j’ai gagné près de 20Mo !).
Par contre pour la fonction 7 pour GA, ça ne change rien au fait que si c’est dans le fichier functions.php d’un thème, si on change de thème, il faut refaire la manip non ? Ou alors tu parles d’un autre fichier de fonctions ?
Pour la fonction 11 elle ajoutera le contenu à la fin uniquement ? Comment faire pour qu’elle l’ajoute au début ?
Mathieu a écrit:
3 avr 2011
Pour la fonction 11, elle ajoute le texte à la fin de l’article. Pour ajouter un contenu en début d’article il faut remplacer le IF par celui ci :
if(!is_feed() && !is_home()) {
$content = ‘
//Mettez votre contenu ici
‘.$content;
}
Fajr Breeze a écrit:
4 avr 2011
Bouts de codes très utiles. Mais, (oui il y a toujours un mais) si seulement vous aviez pris le soin de renseigner dans quel fichier on doit ajouter et/ou éditer les codes.