Petit truc très utile si jamais vous disposiez d’un serveur mutualisé hébergeant plusieurs sites et que vous souhaitiez – par exemple – augmenter le POST_MAX_SIZE pour un de vos clients afin de lui permettre de téléverser des photos de haute qualité via l’admin de WordPress.

À la racine de votre dossier public, ajoutez un .htaccess contenant :

suPHP_ConfigPath /home/public_html/

et au même endroit, un fichier nommé php.ini contenant les configs à surpasser (override), par exemple:

upload_max_filesize=10M
post_max_size=10M
max_execution_time=200
max_input_time=200

MÀJ : Merci au collègue Éric qui me souligne au passage la nécessité d’avoir installé le module suPHP pour que cette astuce fonctionne.

Voici un petit bout de code jQuery bien utile pour convertir tout lien pointant vers une image à une miniature de celle-ci pointant vers l’originale. Très utile pour un blogue ou un forum!

//set image max width
imgMaxWidth = 150;
//define regex pattern to detect images
regexImg = /^http:\/\/(.)+\.(jpg|jpeg|gif|png)$/gi;
//parse links
$('DIV.activity a').each(function(){
	//if a link points to an image
	if($(this).attr('href').match(regexImg)) {
		//add classes
		$(this).addClass('fetchedImgLink');
		//edit target
		$(this).attr('target', '_blank');
		//show image instead of text
		$(this).html("< img class='fetchedImg' src='" + $(this).attr('href') + "' />");
		//check for size
		var currentImg = $(this).find('img');
		var iw = currentImg.width();
		var ih = currentImg.height();
		var ratio = (ih!=0) ? iw/ih : 1;
		//resize if needed
		if(iw > imgMaxWidth) {
			currentImg.width(imgMaxWidth);
			currentImg.height(ih - ((iw-imgMaxWidth) / ratio));
		}
	}
});

J’expérimente Buddypress depuis quelques jours avec les configurations suivantes :

Le but est donc d’avoir un environnement multilingue (via WPML) pour Buddypress sur une installation unique de WP (et non WPMU). Le problème? C’est que ça ne fonctionne pas. En tout cas, ça ne fonctionne pas bien puisque les URLs ne sont pas réécrites correctement pour faire passer le paramètre de langue.

J’ai trouvé sur le forum officiel de WPML que leur traduction, avec le plugin Buddypress Multilingual servant de pont avec le CMS, ne fonctionne que si Buddypress est installé sur la version WPMU (multi-users) de WordPress, et qu’ils ne prévoient pas de soutenir la compatibilité pour la single install considérant qu’en version 3.0, WordPress intègrera les composantes multi-utilisateurs.

Alors en attendant on fait quoi?

Un peu de javascript…

Voici donc ma recette pour – temporairement, le temps que WP 3.o émerge en mai prochain – forcer l’insertion du paramètre de langue dans toutes les URLs d’un site tournant sous Buddypress.

1) Il faut s’assurer que le plugin WPML est configuré de sorte que le paramètre de langue soit passé en query string, du genre : http://monsite.com/buddypress/article?lang=en et non la formule par défaut.

2) Ensuite on ajoute ce bout de code nécessitant jQuery :

//set image max width
imgMaxWidth = 150;
//define regex pattern to detect images
regexImg = /^http:\/\/(.)+\.(jpg|jpeg|gif|png)$/gi;
//parse links
$('DIV.activity a').each(function(){
	//if a link points to an image
	if($(this).attr('href').match(regexImg)) {
		//add classes
		$(this).addClass('fetchedImgLink');
		//edit target
		$(this).attr('target', '_blank');
		//show image instead of text
		$(this).html('');
		//check for size
		var currentImg = $(this).find('img');
		var iw = currentImg.width();
		var ih = currentImg.height();
		var ratio = (ih!=0) ? iw/ih : 1;
		//resize if needed
		if(iw > imgMaxWidth) {
			currentImg.width(imgMaxWidth);
			currentImg.height(ih - ((iw-imgMaxWidth) / ratio));
		}
	}
});

Ce que ce code fait, c’est qu’il détecte si on est dans une version linguistique autre que celle par défaut (donc on a un paramètre de langue initialement). Si tel est le cas, le paramètre est ajouté à chaque lien de la page, mais pas à ceux de la boîte de sélection de langue de WPML (DIV#lang_sel).

Et ça dépanne, en attendant.

Voici un truc tout simple pour créer autant de barres latérales (sidebars) que vous le souhaitez, afin de les équiper de widgets et les afficher dans diverses sections.

Ça devient très utile quand, par exemple, on veut créer une sidebar différente pour une page d’accueil (index.php), une page d’accueil de catégorie (archive.php) et un article seul (single.php).

Tout d’abord, il faut initialiser les barres latérales. Dans le fichier functions.php ajoutez :

if ( function_exists('register_sidebar') ) {
	register_sidebar(array(
		'name' => 'Droite - Accueil',
		'before_widget' => '<div id="%1$s" class="widgetContainer %2$s">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widgetTitle">',
		'after_title' => '</h3>'
	));
	register_sidebar(array(
		'name' => 'Droite - Billet',
		'before_widget' => '<div id="%1$s" class="widgetContainer %2$s">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widgetTitle">',
		'after_title' => '</h3>'
	));
	register_sidebar(array(
		'name' => 'Droite - Categorie',
		'before_widget' => '<div id="%1$s" class="widgetContainer %2$s">',
		'after_widget' => '</div>',
		'before_title' => '<h3 class="widgetTitle">',
		'after_title' => '</h3>'
	));
}

Vous verrez donc à ce moment les trois barres latérales apparaître dans le panneau d’administration, sous Apparence / Widgets.

Par la suite, il suffit d’inclure la bonne barre latérale dans le bon contexte. Pour ce faire, créez – si ce n’est pas déjà fait – un fichier sidebar.php contenant ceci :

if(is_home()) {
	//accueil
	if (function_exists('dynamic_sidebar')) dynamic_sidebar('Droite - Accueil');			
} elseif( is_category('nom-categorie') ) {
	//catégorie spécifique
	if (function_exists('dynamic_sidebar')) dynamic_sidebar('Droite - Categorie');
} elseif( is_single() ) {
	//dans un billet
	if (function_exists('dynamic_sidebar')) dynamic_sidebar('Droite - Billet');
}

Un petit truc d’apparence bien simple : comment créer une page PHP personnalisée permettant quand même d’accéder à toutes les variables et fonctions propres à l’environnement de notre blogue WordPress. La réponse?

Créer une page dans votre dossier de thème :

/wp-content/themes/nom-du-theme/page.php

Au tout début de cette page, insérez les instructions suivantes :

<?php
	define('WP_USE_THEMES', false);
	//chemin relatif à la racine de votre blogue
	//on ne peut pas utiliser les variables de WP, donc on y va manuellement
	require('../../../wp-blog-header.php');
?>

Vous pourrez donc utiliser toutes les fonctions propres à WordPress (principalement le loop) dans votre page sur mesure.

Notez que pour des raisons esthétiques, ça pourrait être bien de songer à embellir l’URL d’accès à cette page grâce à MOD_REWRITE et votre fichier .htaccess.

Il est extrêmement simple de créer un shortcode dans WordPress. Ces derniers se reconnaissent à leur structure rappelant le BBcode des forums de discussion : [valeur] et sont tout simplement remplacés par leur équivalent en code XHTML de sortie.

Pour créer votre shortcode, créez simplement une nouvelle fonction dans la page functions.php de votre thème :

function reafficheTitre()
{
    global $post,$posts;
    //contenu
    $html = '<h3><a href="' . the_permalink() . '">' . $post->post_title .'</a></h3>';
    //output
    return $html;
}
add_shortcode('titre', 'reafficheTitre');

Ceci insèrera un lien vers l’article (via the_permalink()) à l’endroit où vous aurez ajouté le shortcode [titre] dans votre texte.

Utiliser les shortcodes à l’extérieur du loop

Ceci peut devenir vraiment utile et puissant d’utiliser les shortcodes à l’extérieur du loop (dans vos thèmes ou encore dans vos widgets, par exemple). Pour ce faire, il suffit de parser votre contenu comme s’il était traité dans le loop :

$contenu = apply_filters('the_content', '[titre]');
echo $contenu ;

Ceci va donc utiliser le filtre qui traite habituellement le texte dans le loop de WordPress et l’appliquer à ce que vous avez passé en paramètre.

Mais on s’entend que le plus simple, dans ce cas précis, serait de faire un simple appel à votre fonction :

echo reafficheTitre();

Pour plus d’informations je vous invite à consulter cet excellent article.

Voici un script utile, un peu à l’image de celui permettant d’aller chercher la dernière image associée à un billet. Ce dernier permet, via une expression régulière (regex) d’extraire l’URL de la première image INSÉRÉE dans un article de blogue (et non attachée comme pièce-jointe).

Il suffit de l’intégrer au fichier functions.php de votre thème :

function getFirstImage() {

global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];

if(empty($first_img)) return;

return $first_img;
}

Pour appeler la fonction, il suffit d’intégrer ceci dans le loop :

$img = getFirstImage();

Twitter @emilegirard

RSS Liens partagés

Mots-clefs

Ailleurs

Méta