Sélection de codes pratiques et d’astuces utiles pour optimiser et d’alléger WordPress en plaçant quelques lignes de codes supplémentaires. Voici une sélection de codes... Astuces et codes pratiques pour WordPress

Sélection de codes pratiques et d’astuces utiles pour optimiser et d’alléger WordPress en plaçant quelques lignes de codes supplémentaires.

Voici une sélection de codes pratiques qui permettent d’optimiser simplement votre WordPress à condition de mettre un peu les mains dans le cambouis, c’est ce qu’aime dire la communauté WordPress… En effet, les manipulations sont très simples  (il suffit de coller des morceaux de codes). Le plus dur est de savoir dans quels fichiers les coller et je pense que pour un débutant, il peut être assez difficile de ne pas se perdre dans toutes ces lignes de codes. Les codes fournis sur cette page sont des codes qui devront se coller principalement dans le fichier functions.php, single.php ou encore le fichier .htaccess. Je vous direz dans quel fichier placer ce code.

Quelques conseils:

  • Les codes se placent généralement à la fin de chaque fichier.
  • Les parties de codes rouges sont les parties que vous devez paramétrer et modifier vous-même.
  • Pensez à bien copier et coller le code du début à la fin.. Une simple parenthèse oubliée peut transformer votre site en page d’erreur…
  • Si vous rencontrez des problèmes lors d’une modification de fichier notamment une erreur 404 ou une page introuvable, je vous conseille de télécharger votre fichier via Filezilla et de le modifier avec Notepad++.
  • Si vous modifiez votre fichier wp-config.php, je vous recommande de l’enregistrer au format UFT 8 sans BOM (option disponible dans Notepad++ > encodage).

Limiter le nombre de révisions

Il est conseillé de limiter le nombre de révisions (sauvegardes automatiques) de vos articles pour ne pas trop encombrer votre base de données. Pour limiter le nombre d’articles, vous devez entrer ce code dans le fichier wp-config.php:

define ('WP_POST_REVISIONS', 3);

Les sauvegardes automatiques sont maintenant limitées à 3. Si vous en désirez plus ou moins, modifiez le chiffre à votre guise.

Si vous désirez supprimer totalement la fonction de révisions d’articles alors collez ce code:

define('WP_POST_REVISIONS', false);

Modifier le permalien de la page des résultats de recherche

La page de résultat de recherche est du style Neadkolor.com/s=mot. Si vous désirez la rendre plus agréable, rendez vous dans votre fichier functions.php et collez ce code:

add_action('template_redirect', 'search_url_rewrite_rule');
function search_url_rewrite_rule() {
	global $wp_rewrite;
	if ( is_search() && isset( $_GET['s'] ) ) {
		$s = str_replace( array( ' ', '%20' ), '+', get_query_var( 's' ) );
		wp_redirect( home_url( $wp_rewrite->search_base . '/' . remove_accents ( $s ) ) );
		exit();
	}
}
add_action('init','change_search_permalinks');
function change_search_permalinks( ) {
    global $wp_rewrite;
    $wp_rewrite->search_base = 'recherche';
}

Votre url sera désormais du style Neadkolor.com/recherche/mot. Cela est plus agréable non? Vous pouvez également changer le terme recherche par celui de votre choix.

Commentaires en DoFollow

Par défaut, les liens des commentaires sont en NoFollow, cela signifie que les moteurs de recherche ne les prennent pas en compte. Si vous désirez passez ces commentaires en DoFollow, collez ce code à la racine du fichier functions.php.

add_filter('get_comment_author_link', 'gkp_remove_nofollow');
add_filter('comment_text', 'gkp_remove_nofollow');
function gkp_remove_nofollow( $text ) {
	$text = str_replace("rel='external nofollow'", "rel='external'", $text);
	$text = str_replace('rel="nofollow"', '', $text);
	return $text;
}

Les commentateurs bénéficieront ainsi d’une ancre et d’un lien retour vers le site de leur choix. Cela peut être vu comme une récompense d’ avoir laissé un commentaire et participé à la vie du blog / site. Attention cependant car un blog avec des commentaires en DoFollow est généralement plus visé par les spammeurs et les outils de spams automatiques. Si vous possédez un fort traffic, c’est des centaines et des centaines de spams par jour que vous pourriez recevoir… Il vous faudra alors un bon antispam comme Akismet.

Autoriser les shortcodes dans les widgets

Si vous desirez inserer n’importe quel shortcode dans vos widgets (notamment celui intitulé « texte« ), c’est desormais possible en collant ce code dans le fichier functions.php.

if ( !is_admin() ) {
    add_filter('widget_text', 'do_shortcode', 11);
}

source

Modifier la couleur des articles en fonction de leurs statuts

Si vous désirez y voir plus clair lorsque vous êtes sur la page de visualisation de tous vos posts, je vous conseille d’y mettre de la couleur en collant ce code dans functions.php.

function color_css_post_status() {
?>
<style>
.status-draft{background: #FFFF99 !important;}
.status-future{background: #CCFF99 !important;}
.status-pending{background: #87C5D6 !important;}
.status-private{background:#FFCC99 !important;}
.status-publish{}
</style>
<?php
}
add_action('admin_print_styles-edit.php','color_css_post_status');

Vous pouvez ensuite personnaliser les couleurs à votre convenance mais je trouve que les couleurs d’origine rendent plutôt bien.

source

Afficher le nombre de commentaires sans Pingbacks et trackbacks

Si, dans les commentaires de votre site, vous n’affichez pas les articles qui font des liens vers votre site, il est necessaire de les supprimer du nombre total de vos commentaires. Pour cela, copiez et collez ce code dans votre fichier functons.php.

function comment_count( $count ) {
	if ( !is_admin() ) {
		global $id;
		$comments_by_type = &separate_comments(get_comments('status=approve&post_id=' . $id));
		return count($comments_by_type['comment']);
	} else {
		return $count;
	}
}
add_filter('get_comments_number', 'comment_count', 0);

source

Utiliser la dernière version de jQuery

Par défaut, lorsque vous téléchargez la dernière version de WordPress, vous possédez la dernière version de jQuery. Mais si une nouvelle version de jQuery voit le jour, vous êtes obligés d’attendre une mise à jour de WordPress avec le dernier jQuery. Ce code qui est à coller dans le fichier functions.php vous permettra de toujours utiliser la dernière version de jQuery.

function insert_last_jquery()
{
    if( !is_admin() ){
        wp_deregister_script('jquery');
        wp_register_script('jquery',"http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js", false, '');
        wp_enqueue_script('jquery');
   }
}

source

Sécuriser les fichiers wp-config.php et .htaccess

Il est nécessaire d’interdire l’accès aux fichiers qui peuvent être sensibles pour la sécurité de votre site. Pour cela collez ce code dans le fichier wp-config.php, cela aura pour but de rediriger vers une erreur 403.

#Protection 403 du fichier configuration
<files wp-config.php>
	Order deny,allow
	deny from all
</files>

source

Faites en de même avec votre fichier .htaccess en lui ajoutant ces lignes:

#Protection 403 du fichier htaccess
<files .htaccess>
 Order Allow,Deny
 Deny from all
</files>

source

Utiliser un shortcode ailleurs que sur la Loop

Pour pouvoir utiliser un shortcode en dehors de la Loop WordPress, vous devez collez ce code à l’endroit où vous voulez qu’il apparaisse:

<?php echo do_shortcode('[shortcode]'); ?>

Rediriger vers l’article si la recherche ne donne qu’un résultat

Ce code est à copier dans le fichier functions.php. Il a pour but de diriger un de vos visiteurs qui effectue une recherche vers l’article en question si la recherche n’a donné qu’un seul résultat. Pratique non ?

add_action('template_redirect', 'redirect_search_to_single_post_result');
function redirect_search_to_single_post_result() {
    if( is_search() ) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            if( $wp_query->posts['0']->post_type == 'post' )
            	wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}

Insérer automatiquement de la publicité dans le texte de votre article

Pour insérer du contenu publicitaire à n’importe quel endroit de votre texte de façon automatique, rendez vous dans votre fichier single.php et à la place de ce code:

<?php the_content(''); ?>

par ce code:

<?php
$show_after_p = 2;
$content = apply_filters('the_content', $post->post_content);
if(substr_count($content, '<p>') > $show_after_p)
{
	$contents = explode("</p>", $content);
	$p_count = 1;
	foreach($contents as $content)
	{
		echo $content;
		if($p_count == $show_after_p)
		{
		?>
                VOTRE CODE DE PUB ICI
		<?
		}
		echo "</p>";
		$p_count++;
	}
}
?>

Le but de ce code est de placer votre publicité après un certain nombre de paragraphes. Ainsi, changez le chiffre de la 2eme ligne du code par celui de votre choix.

Par exemple, si vous désirez que la publicité soit présente apres 5 paragraphes de texte, il suffit de modifier le chiffre 2 par 5 comme ceci:

$show_after_p = 5;

…et n’oubliez pas de remplacer le texte  » VOTRE CODE DE PUB ICI » par le code fourni par votre régie publicitaire…

Bannir une adresse IP de son blog

Si vous voulez bannir un utilisateur de votre blog, il suffit de coller ce code dans votre fichier .htaccess et remplacer les chiffres rouges par la ou les adresses IP des internautes à bannir.

#Interdire l'accès
Order Allow,Deny
Deny from 127.0.0.1
Deny from 127.0.0.2
Allow from all

Modifier l’attribut Privé des articles

Si vous désirez changer le terme « Privé » qui se trouvent devant le titre de vos articles en mode privé, collez ce code dans le fichier functions.php et remplacez le texte en rouge par l’attribut de votre choix.

add_filter('private_title_format', 'GkPrivate');
function GkPrivate($title) {
       return 'votre-nouveau-terme : %s';
}

Modifier les bases Tag et Author des permaliens

Si vous désirez que vos permaliens n’intègrent plus le mots « tag »  mais  un autre terme à la place, collez ce code dans le fichier functions.php et modifier le le mot rouge par le mot de votre choix:

add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->tag_base = "tag"; $wp_rewrite->flush_rules();'));

Si vous désirez que ce soit la catégorie « Author » qui n’apparaisse pas dans les permaliens, collez ce code.

add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->author_base = "author"; $wp_rewrite->flush_rules();'));

Améliorer les recherches de liens internes

Si vous possédez des centaines d’articles sur votre blog et que vous désirez insérer un lien parlant de l’un d’entre eux il va vous falloir retrouver le lien de cet article le plus simplement possible. Pour cela, il existe désormais une fonction de recherche d’articles lorsque vous inserez un lien. Cependant, cette fonction de recherche s’effectue sur tout le contenu des articles alors que lorsque nous recherchons un article, c’est son titre que nous rechechons en priorité. Ce code permet donc d’ameliorer la recherche de liens internes en donnant plus d’importance aux titres. Il suffit de le coller dans le fichier functions.php

if( is_admin() ):
function baw_better_internal_link_search( $search, &$wp_query )
{
	global $wpdb;
	// si pas de recherche, je la renvoie vide
	if( !isset( $_POST['action'] ) || $_POST['action']!='wp-link-ajax' || empty( $search ) )
             return $search;
	// Selon si la recherche est une recherche exacte ou pas, j'ajouterai des % dans mon LIKE
	$n = !empty( $wp_query->query_vars['exact'] ) ? '' : '%';
	//Init pour éviter des notices
	$search = '';
	$searchand = '';
        /* ASTUCE 1 */
	// Pour chaque term passé dans la recherche, je vais les sanitizer avec esc_sql et like_escape
	// puis je construis ma chaîne de recherche SEULEMENT dans post_title !
	foreach( (array) $wp_query->query_vars['search_terms'] as $term ):
		$term = esc_sql( like_escape( $term ) );
		$search.= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}'))";
		$searchand = ' AND ';
	endforeach;
	// Cette fois si la recherche n'est pas vide, je l'ajoute
	if ( !empty( $search ) )
		$search = " AND ({$search}) ";
        /* ASTUCE 2 */
	// Je récupère les status des posts filtrés dans la requête et j'ajoute si besoin le status "FUTURE"
	// afin de pouvoir faire des liens vers mes articles prévus dans le futur.
	$post_status = (array)$wp_query->query_vars['post_status'];
	if ( !in_array( 'future', $post_status ) ):
		$post_status[] = 'future';
		$wp_query->set( 'post_status', $post_status );
	endif;
	// Et on renvoie la recherche
	return $search;
}
add_filter('posts_search', 'baw_better_internal_link_search', 10, 2 );
endif;

En bonus, ce code comporte également quelques lignes qui permettent de faire un lien vers un article qui est en cours d’édition mais pas encore publié. Chose impossible sans ce code.

Afficher les images attachées d’un article sans l’image à la une

Cette astuce peut être utile si vous désirez créer un portfolio ou une galerie de toutes les images contenues dans votre post tout en ignorant l’image à la une, qui n’a rien à faire dans cette sélection  Pour cela il suffit de placer ce code dans le fichier single.php de votre thème  à l’endroit ou la galerie doit être affichée.

<?php
// On récupère la liste des images attachées à l'article
$attachments = get_children( array(
	'post_type'      => 'attachment',
	'posts_per_page' => -1,
	'post_parent'    => get_the_ID(),
	'exclude'        => get_post_thumbnail_id()
) );
// On teste si on a des images ou non
if ( $attachments ) {
	echo '<figure>';
	foreach ( $attachments as $attachment ) {
		// On affiche l'image dans un lien hypertexte
		echo wp_get_attachment_link( $attachment->ID, 'thumbnail' );
	}
	echo '</figure>';
}
?>

Empêcher le Hotlinking

Afin d’empêcher tout risque de hotlinking, vous pouvez utiliser cette méthode pour diffuser l’image de votre choix à la place de l’image volée. Il suffit de coller ce code dans le fichier .htaccess tout en remplaçant l’url rouge.

RewriteEngine On
# Remplacer mywebsite.com/ par l'adresse de votre site
RewriteCond %{HTTP_REFERER} !^http://(.+.)?mywebsite.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
# Remplacer /images/nohotlink.jpg par le chemin de l'image affichée chez les voleurs
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Se protéger des spams de commentaires

Si votre blog accepte les commentaires (en dofollow notamment), alors vous avez déjà croisés à ce genre de robots qui commentent votre article avec une phrase souvent sans rapport avec le thème de votre blog mais également parfois assez incompréhensible. Ce bout de code est à coller dans le fichier .htaccess et permet à Askimet de proteger plus efficacement contre le spam en bloquant l’accès au fichier wp-comments-post.php (soumission des commentaires).

## ******** Pour se protéger contre des commentaires de Spam **********
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*mon-site.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://www.mon-site.com [R=301,L]

Désactiver un shortcode

Pour désactiver et rendre inactif un shortcode, il suffit de l’entourer d’une paire de crochet comme ceci:

[[mon_shortcode]]

N’afficher la description des catégories que sur la première page

Si vous possédez un blog avec beaucoup de catégories beaucoup d’articles, ainsi qu’un système de pagination. Vous vous retrouvez avec la description de la catégorie sur chaque page de votre catégorie. Or, il est recommandé, pour vos lecteurs et pour les moteurs de recherche, de faire en sorte de n’afficher qu’une fois cette description. Pour ce faire, dans votre fichier category.php (testé sur le theme Twenty Ten), remplacez cette ligne de code:

if ( ! empty( $category_description ) )

par celle-ci:

if (!empty($category_description) && $paged == 0)

Sources:
http://www.geekpress.fr/wordpress/astuce
http://www.geekeries.fr/snippet/
http://blog.axe-net.fr/astuces-wordpress-contre-duplication/

No comments so far.

Be first to leave comment below.

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *