Ajout de règles de réécritures

class produits{

	public static function hooks(){
		add_action('init', array(__CLASS__,'rewrite_rules'));
		add_action('template_redirect',array(__CLASS__,'template_redirect'));

		register_activation_hook( __FILE__, array( __CLASS__, 'on_activation' ) );
		register_deactivation_hook( __FILE__, array( __CLASS__, 'on_deactivation' ) );
	}

	public static function rewrite_rules() {

		add_rewrite_tag('%is_produit%','([01])');
		add_rewrite_tag('%produit_type%','([^&]+)');

		add_rewrite_rule('^produit-type/(.*?)/?$','index.php?is_produit=1&produit_type=$matches[1]','top');

	}

	public static function template_redirect(){
		global $wp_query;
		
		if( isset($wp_query->query_vars['is_produit']) && $wp_query->query_vars['is_produit'] == 1 ){
			if( $wp_query->query_vars['produit_type'] == 'le-bon-type' ){
				load_template(...);
				exit;
			}
		}
	}

	public static function on_activation() {
		self::rewrite_rules();
		flush_rewrite_rules();
	}
	
	public static function on_deactivation() {
		flush_rewrite_rules();
	}
}

produits::hooks();

Wordrpress met les règles de réécritures en cache, il faut donc faire une flush de ce cache après avoir ajouté des règles de réécritures.

Attention!
Ne pas faire un flush des règles de réécriture systématique en appelant flush_rewrite_rules() ou $wp_rewrite->flush_rules() à chaque exécution!

Appeler flush_rewrite_rules() à l’activation d’un plugin ou manuellement via le back office « Réglages » > « Permaliens » > cliquer sur « Enregistrer les modifications », comme expliqué là : Function_Reference/flush_rewrite_rules et là Rewrite_API/flush_rules.

http://codex.wordpress.org/Rewrite_API/add_rewrite_tag
http://codex.wordpress.org/Rewrite_API/add_rewrite_rule