wordpress code function

20 codes utiles pour customiser WordPress

| 30 Commentaires

43
SHARES

Pour une fois, 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");
"; } 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;"--> $title = get_the_title();
$keys= explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu',
'<strong class="search-excerpt">\0</strong>',
$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>Sélection aléatoire</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) : ?>
// affichage des commentaires
endforeach;

par celui-ci

<ul class="commentlist"> 
<?php // Commentaires seulement

foreach ($comments as $comment) :
$comment_type = get_comment_type(); 
if($comment_type == 'comment') { ?> 
<li>//Comment code goes here</li> 
<?php } endforeach; ?>
</ul> 
<ul> 
<?php //Et puis les trackbacks

 foreach ($comments as $comment) :  
$comment_type = get_comment_type();  
if($comment_type != 'comment') { ?> 
<li><?php comment_author_link() ?></li> 
<?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');

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/GetFeedData?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&gt;if(empty($content)) $content='Make A Donation'; 

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 for '.$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
43
SHARES

Auteur : Mathieu

Passionné et professionnel du web depuis 10 ans, je rédige Le Geek Pauvre depuis 2007. Le but de mon blog est de partager avec vous des outils gratuits, vous permettant de remplacer ou d'améliorer des logiciels ou services payants. En 2012, j'ai reçu la distinction de meilleur blog high-tech aux Golden Blog Awards.