Je suis un titre
filtre
Comment j’ai créé un modèle - 13507
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Travail sur la Ligne du temps - 12998
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
De l’autosabotage à la sérénité par l’Intelligence Positive™ - 12517
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Techniques de langage avec les 6 éléphants de Steve Andreas - 12498
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Atelier de la rentrée saison 2025-2026 - 12497
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Le modèle SWISH – démo et pratique - 12400
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Les Sleight of Mouth patterns - 11793
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Atelier de Pratique: Transformer vos Croyances Limitantes avec les patterns de Polya - 11749
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
Les mots nous mentent-ils? - 11594
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
MOSAIC : Au-delà du problème, l’activation de la solution intérieure - 11577
date AP: {mb_atelier-pnl_ap_debut_datetime}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
saison: {mb_atelier-pnl_ap_saison}
replay pour: {mb_atelier-pnl_ap_replay_disponible}
<?php
// functions.php ou fichier plugin personnalisé
// 1. Fonction d'affichage des filtres
function display_bricks_filters() {
?>
<div class="bricks-filters">
<!-- Tri -->
<div class="filter-group">
<label for="orderby-filter">Trier par :</label>
<select id="orderby-filter">
<option value="">Par défaut</option>
<option value="date_atelier" <?php selected(isset($_GET['orderby']) ? $_GET['orderby'] : '', 'date_atelier'); ?>>
Date de l'atelier
</option>
<option value="saison" <?php selected(isset($_GET['orderby']) ? $_GET['orderby'] : '', 'saison'); ?>>
Saison
</option>
</select>
</div>
<!-- Filtres -->
<div class="filter-group">
<label for="replay-status">Statut Replay :</label>
<select id="replay-status">
<option value="">Tous</option>
<option value="with_replay" <?php selected(isset($_GET['replay_status']) ? $_GET['replay_status'] : '', 'with_replay'); ?>>
Avec replay
</option>
<option value="without_replay" <?php selected(isset($_GET['replay_status']) ? $_GET['replay_status'] : '', 'without_replay'); ?>>
Sans replay
</option>
</select>
</div>
<div class="filter-group">
<label for="replay-disponible">Disponibilité Replay :</label>
<select id="replay-disponible">
<option value="">Tous</option>
<option value="tout" <?php selected(isset($_GET['replay_disponible']) ? $_GET['replay_disponible'] : '', 'tout'); ?>>
Tout le monde
</option>
<option value="limite" <?php selected(isset($_GET['replay_disponible']) ? $_GET['replay_disponible'] : '', 'limite'); ?>>
Limité
</option>
</select>
</div>
</div>
<?php
}
// 2. Enregistrer les scripts et styles
function register_bricks_facet_assets() {
wp_enqueue_script('bricks-facets', get_template_directory_uri() . '/js/bricks-facets.js', array('jquery'), '1.0', true);
wp_enqueue_style('bricks-facets-style', get_template_directory_uri() . '/css/bricks-facets.css');
wp_localize_script('bricks-facets', 'bricksFacets', array(
'ajaxurl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('bricks_facet_nonce')
));
}
add_action('wp_enqueue_scripts', 'register_bricks_facet_assets');
// 3. Hook pour filtrer les arguments de requête de Bricks
function filter_bricks_query_args($query_args) {
error_log('Bricks query args interceptés');
if (isset($_GET['facet_filter']) && $query_args['post_type'] === 'atelier-pnl') {
// Meta queries pour les filtres
$meta_query = array();
// Filtre pour replay URL
if (!empty($_GET['replay_status'])) {
if ($_GET['replay_status'] === 'with_replay') {
$meta_query[] = array(
'key' => 'ap_url_replay',
'compare' => '!=',
'value' => ''
);
} elseif ($_GET['replay_status'] === 'without_replay') {
$meta_query[] = array(
'key' => 'ap_url_replay',
'compare' => 'NOT EXISTS'
);
}
}
// Filtre pour replay disponible
if (!empty($_GET['replay_disponible'])) {
$meta_query[] = array(
'key' => 'ap_replay_disponible',
'value' => 'tout',
'compare' => $_GET['replay_disponible'] === 'tout' ? '=' : '!='
);
}
// Appliquer les meta queries
if (!empty($meta_query)) {
if (count($meta_query) > 1) {
$meta_query['relation'] = 'AND';
}
$query_args['meta_query'] = $meta_query;
}
// Gestion du tri
if (!empty($_GET['orderby'])) {
switch ($_GET['orderby']) {
case 'date_atelier':
$query_args['meta_key'] = 'ap_debut_datetime';
$query_args['orderby'] = 'meta_value';
$query_args['order'] = 'ASC';
break;
case 'saison':
$query_args['meta_key'] = 'ap_saison';
$query_args['orderby'] = 'meta_value';
$query_args['order'] = 'ASC';
break;
}
}
error_log('Query args modifiés : ' . print_r($query_args, true));
}
return $query_args;
}
add_filter('bricks/posts/query_vars', 'filter_bricks_query_args', 10, 1);
display_bricks_filters(); ?>/* css/bricks-facets.css */
.bricks-filters {
margin-bottom: 2em;
display: flex;
flex-wrap: wrap;
gap: 1.5em;
}
.filter-group {
display: flex;
flex-direction: column;
gap: 0.5em;
}
.filter-group label {
font-weight: 500;
color: #666;
font-size: 0.9em;
}
.bricks-filters select {
padding: 8px 16px;
border: 1px solid #ddd;
border-radius: 4px;
background-color: #fff;
min-width: 200px;
cursor: pointer;
}
.bricks-filters select:hover {
border-color: #999;
}
.bricks-filters select:focus {
outline: none;
border-color: #666;
box-shadow: 0 0 0 2px rgba(0,0,0,0.1);
}
@media (max-width: 768px) {
.bricks-filters {
flex-direction: column;
gap: 1em;
}
.filter-group {
width: 100%;
}
.bricks-filters select {
width: 100%;
}
}jQuery(document).ready(function($) {
function updateQueryString(key, value) {
const urlParams = new URLSearchParams(window.location.search);
if (value) {
urlParams.set(key, value);
} else {
urlParams.delete(key);
}
urlParams.set('facet_filter', '1');
return urlParams.toString();
}
function filterBricksQuery() {
const orderby = $('#orderby-filter').val();
const replayStatus = $('#replay-status').val();
const replayDisponible = $('#replay-disponible').val();
let queryString = new URLSearchParams();
if (orderby) queryString.set('orderby', orderby);
if (replayStatus) queryString.set('replay_status', replayStatus);
if (replayDisponible) queryString.set('replay_disponible', replayDisponible);
if (queryString.toString()) queryString.set('facet_filter', '1');
window.location.search = queryString.toString();
}
$('.bricks-filters select').on('change', filterBricksQuery);
});