Informatique
Vider son cache DNS
by Jean-Marc Amiaud le 02 Mar 2012, catégorie Réseau
Il peut arriver parfois que l’on ai besoin de vider son cache DNS.
En effet, les enregistrements de zone sont toujours liés à un temps de validité.
Or après une modification de zone, il arrive parfois que l’on ai besoin de prendre en compte directement la modification effectuée.
Il suffit pour ce faire d’ouvrir sous windows une console et de taper la commande suivante : ipconfig /flushdns
Pour connaître le contenu du cache DNS, vous pouvez utiliser la commande suivante : ipconfig /displaydns
A savoir que dans ce cas, seront listés tous les enregistrement mis en cache mais également le contenu du fichier HOSTS (c:\\windows\system32\etc\drivers\hosts)
Modifier la pagination du plugin WooCommerce
by Jean-Marc Amiaud le 08 Fév 2012, catégorie WooCommerce
La pagination de base du plugin permet de passer d’une page à l’autre uniquement avec les deux liens « Précédent » et « Suivant ».
Si vous souhaitez lister les numéros de page accécible directement, il faut écraser la fonction appellée par défaut.
Afin de garantir la fonctionnalité lors des mises à jour, il faut absolument faire la modification au niveau du thème et non du plugin en lui-même.
Il est préférable d’utiliser le fichier functions.php de votre thème.
Voici un exemple du code que j’ai fait pour arriver à lister les pages et du coup créer un controle de navigation bien plus ergonomique et pratique.
function store_pagination()
{
global $wp_query;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ( $wp_query->max_num_pages > 1 ) :
?>
<table>
<tbody>
<tr>
<td>
<div><?php previous_posts_link( __( '<span>←</span> Précédent', 'store' ) ); ?></div>
</td>
<?php
for($i=1; $i <= $wp_query->max_num_pages; $i++)
{
?>
<td>
<a href="<?php echo '?paged=' . $i; ?>" <?php echo ($paged==$i)? 'class="selected"':'';?>><?php echo $i;?></a>
</td>
<?php
}
?>
<td>
<div><?php next_posts_link( __( 'Suivant <span>→</span>', 'store' ) ); ?></div>
</td>
</tr>
</tbody>
</table>
<?php
endif;
}
remove_action('woocommerce_pagination', 'woocommerce_pagination');
add_action('woocommerce_pagination','store_pagination');
Faire des templates de theme wordpress avec un style css qui s’adapte à la catégorie
by Jean-Marc Amiaud le 10 Nov 2011, catégorie WordPress
WordPress est initialement prévu pour faire tourner un theme selon un unique style défini par ce dernier.
Je vous propose ici une façon d’améliorer l’esthétique globale de votre blog en s’appuyant sur les catégories de WordPress pour définir des styles particuliers aux différentes sections de votre blog.
1 – L’approche
Il existe deux fonctions de l’API WordPress, body_class et post_class qui écrivent un attribut de balise class, listant des styles relatifs au contexte de la page demandée.
Pour plus de renseignement sur la fonction body_class : http://codex.wordpress.org/Function_Reference/body_class
Pour plus de renseignement sur le fonction post_class : http://codex.wordpress.org/Function_Reference/post_class
L’idée est d’ajouter à cette liste de classes css, les classes des catégories associées au contexte de la requête ainsi que celles de leurs parents en utilisant tout simplement le nom de la categorie.
Ainsi, si une catégorie n’a pas été spécialement designée dans le fichier de style, il héritera le style de la catégorie parente et ainsi de suite, jusqu’au style par défaut…
Par exemple, ma page de catégorie WordPress, ainsi que tous les articles de la catégorie héritent du style de la catégorie mère, la catégorie Programmation, qui elle même hérite du style de la catégorie Informatique.
2 – Code
function category_id_class($myClasses) { if(is_single()) { global $post; foreach((get_the_category($post->ID)) as $myCategory) { // On récupère toutes les catégories de l'article $myCategories = array_filter(explode(' ',get_category_parents($myCategory->cat_ID, FALSE, ' ', TRUE))); // On récupère les doublons à supprimer par rapport à l'existant pour deux raisons : // 1 - Par ce que ça fait un code html plus propre en supprimant les doublons inutiles // 2 - Pour assurer la cohérence hiérarchique si la suppression des doublons se fait sur le tableau existant. // En effet, wordpress ajoute déjà une classe au nom de la catégorie de l'article, or il faut que le style de la catégorie s'applique après le style d'une de ses catégories parentes. $myCatToRemove = array_intersect($myClasses, $myCategories); // On effectue donc bien la suppression des doublons sur le tableau existant $myClasses = array_diff($myClasses, $myCatToRemove); // On retourne les tableaux associés, les nouvelles classes définies à la suite des existantes définies par wordpress. // Attention, j'insiste sur l'ordre ! $myClasses = array_merge($myClasses, $myCategories); } } else if(is_category()) { // De même si c'est une page de catégorie // Seule la récupération de l'ID de la catégorie de départ est différente. global $wp_query; $myCategoryID = get_query_var('cat'); // On rajoute le prefix 'category-' aux classes de categorie, pour indiquer qu'on se trouve dans un contexte de page de categorie. $myCategories = array_prefix_values('category-', array_filter(explode(' ',get_category_parents($myCategoryID, FALSE, ' ', TRUE)))); $myCatToRemove = array_intersect($myClasses, $myCategories); $myClasses = array_diff($myClasses, $myCatToRemove); $myClasses = array_merge($myClasses, $myCategories); } return $myClasses; } add_filter('post_class', 'category_id_class'); add_filter('body_class', 'category_id_class'); function array_prefix_values($prefix, $array) { $callback = create_function('$str','return "'.$prefix.'".$str;'); return array_map($callback,$array); }
3 – Usage
Il suffit de faire votre appel dans votre template à la balise body de la manière suivante :
<body <?php body_class(); ?>>
…
</body>
Le code généré sera alors de la forme :
<body class= »single single-post postid-367 single-format-standard logged-in informatique programmation wordpress »>
…
</body>
Il ne reste plus qu’a définir les styles css correspondants dans votre feuille de style (style.css)
Solution pour les problèmes de cache des partages Facebook
by Jean-Marc Amiaud le 12 Juin 2011, catégorie Développement
Si vous utilisez les partages Facebook depuis un site extérieur, vous vous êtes surement rendu compte que Facebook mettait en cache le partage lors du premier accès.
Chose très embêtante si vous devez changer rapidement une description inadéquate ou une image qui ne correspond pas à ce que vous vouliez obtenir lors du partage.
Heureusement il existe un outil bien caché qui va vous permettre de régler le problème : Url Linter.
Cette interface permet de tester la manière dont Facebook va partager une url.
Mais elle a surtout l’intérêt de mettre à jour le cache de Facebook immédiatement !
N’oubliez donc pas de mettre ce lien dans vos bookmarks !
Replace WordPress default media icon with preview image
by Jean-Marc Amiaud le 05 Mar 2011, catégorie Programmation, WordPress
Media library in WordPress display thumbnail of the pictures but only generic icon for all other type.
It’s possible to change generics icons (eg. by video preview image) with pair of filter :
[code lang= »csharp »]
add_filter(‘wp_mime_type_icon’, ‘my_plugin_video_icon’, 10, 3);
add_filter(‘icon_dir’, ‘wp_plugin_video_icon_dir’);
function my_plugin_video_icon($icon, $mime, $post_id)
{
if(preg_match("/^video/",$mime))
{
// – Find your icon for the specified post
// – Save the repository of your icon as global
global $_current_video_icon_dir;
$_current_video_icon_dir = dirname(ABSPATH . substr($new_icon, strpos($new_icon, "wp-content")));
// – Return your icon path
return $new_icon;
}
}
function my_plugin_video_icon_dir($dir)
{
global $_current_video_icon_dir;
if(!empty($_current_video_icon_dir))
{
$var = $_current_video_icon_dir;
$_current_video_icon_dir = null;
return $var;
}
return $dir;
}
[/code]
Handle unload event with jQuery
by Jean-Marc Amiaud le 23 Déc 2010, catégorie jQuery, Programmation
After a lot of research over internet, to know how it’s possible to handle unload event with jQuery, I have found the solution ! But I’ve seen lot of error… the reason of my post.
The unload event is fired by window element and NOT by the document element !
So you have to handle the event from window element like this :
jQuery(window).unload(function() { alert(‘Window unload event is fired !’); });
That’s all !
Filter wordpress content to replace link by your player code
by Jean-Marc Amiaud le 30 Nov 2010, catégorie WordPress
When you insert a media into a wordpress article, the media library insert just a simple link into your content.
It’s possible to replace this link by your player, for exemple, using the_content wordpress filter function.
- First step, add your filter function :
add_filter('the_content', myFilterFunction);
- Second step, write your filter function to parse your required link type (.mp3, .flv, …) to replace :
function myFilterFunction($content) {
$content = preg_replace_callback('#^(<p>)?<a.*href=[\'"](http://.*/.*\.mp3)[\'"].*>.*</a>(</p>|<br />)?#im', myPlayerWriterCallBack, $content);
}function myPlayerWriterCallBack($match) {
// Use $match[2] to get original link url
}
Example with my little flash audio player.
Getting the absolute path in ASP.NET
by Jean-Marc Amiaud le 30 Nov 2010, catégorie ASP.NET
After too much case of context, i´ve wrote a simple but powerfull function to get the absolute path in ASP.NET.
[code lang= »csharp »]
public static string GetAbsoluteUrl(string relativeUrl)
{
return String.Format("{0}://{1}{2}{3}",
HttpContext.Current.Request.IsSecureConnection ? "https" : "http",
HttpContext.Current.Request.Url.Host,
HttpContext.Current.Request.Url.IsDefaultPort ? "" : ":" + HttpContext.Current.Request.Url.Port,
VirtualPathUtility.ToAbsolute(relativeUrl, HttpRuntime.AppDomainAppVirtualPath));
}
[/code]
Upload a binary file through an ASP.NET 2.0 WebService
by Jean-Marc Amiaud le 10 Nov 2010, catégorie ASP.NET, Programmation
It’s possible to upload a large binary file through an ASP.NET 2.0 WebService.
- Declare a service method that take a byte array in argument.
- Change the maximum http request size allowed by IIS.
- Change the maximum http request size allowed by ASP.NET
Service Method
[code lang= »csharp »]
[WebMethod]
public bool FileUpload (string name, int type, byte[] data)
{
}
[/code]
IIS Configuration
For IIS 6.0, you have to change the metabase.xml file located in C:\Windows\System32\Inetsrv.
Find and set the key AspMaxRequestEntityAllowed with the appropriate value.
ASP.NET Configuration (web.config)
Open the web.config file of your WebService project.
Define the httpRuntime subsection of system.web section like this :
[code lang= »xml »]
<httpRuntime enable="true" maxRequestLength="1073741824" />
[/code]
Warning : The maxRequestLength must to be in Ko.