Comment ajouter un balisage de schéma JSON-LD aux pages d'URL SEO HUSKY
Problème
Le champ “SEO URL request” dans les filtres HUSKY <script> les balises pour des raisons de sécurité, empêchant l'insertion directe de données structurées JSON-LD (balisage schema) pour les résultats enrichis de Google.
Aperçu de la solution
Au lieu d'insérer le code JSON-LD complet directement dans le champ de texte SEO, utilisez des clés de schéma dans l'admin HUSKY et stockez le code JSON-LD réel dans des fichiers séparés ou dans functions.php.
Méthode 1 : Fichiers JSON statiques (Recommandé pour les schémas simples)
Étape 1 : Créer un dossier pour les fichiers de schéma
- Accédez à
/wp-content/uploads/ - Créez un nouveau dossier :
json-ld-schemas
Étape 2 : Créer des fichiers JSON de schéma
- Créez des fichiers comme
category1.json,products.json, etc. - Dans chaque fichier, ajoutez du code JSON-LD pur (sans balises
<script>) :{ "@context": "https://schema.org", "@type": "CollectionPage", "name": "Product Category", "description": "Category description" }
Étape 3 : Ajoutez ce code à functions.php :
add_action('init', function () {
$url_request = WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);
add_filter('woocommerce_after_shop_loop', function () use ($url_request) {
$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}
$schema_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($schema_key)) {
$upload_dir = wp_upload_dir();
$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';
$schema_file = $schemas_dir . $schema_key . '.json';
if (file_exists($schema_file)) {
$json_content = file_get_contents($schema_file);
echo '<div class="woof_seo_text"><script type="application/ld+json">' . $json_content . "</script></div>\r\n";
}
}
}, 99999);
}, 1);
Étape 4 : Dans l'admin HUSKY (SEO URL request → champ de texte SEO)
- Saisissez uniquement la clé de schéma (par exemple,
category1) - Ne saisissez PAS le code JSON-LD complet
Méthode 2 : Fichiers PHP dynamiques (Pour les schémas dynamiques)
Étape 1 : Créez des fichiers PHP de schéma dans /wp-content/uploads/json-ld-schemas/
Exemple : category-dynamic.php
<?php
global $wp_query;
$term = get_queried_object();
$category_name = $term ? $term->name : 'Products';
$category_url = get_term_link($term);
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'CollectionPage',
'name' => $category_name,
'url' => $category_url,
'description' => term_description($term->term_id),
'breadcrumb' => array(
'@type' => 'BreadcrumbList',
'itemListElement' => array(
array(
'@type' => 'ListItem',
'position' => 1,
'name' => 'Home',
'item' => home_url()
),
array(
'@type' => 'ListItem',
'position' => 2,
'name' => $category_name,
'item' => $category_url
)
)
)
);
return $schema;
Étape 2 : Ajoutez ce code à functions.php :
add_action('init', function () {
$url_request = WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);
add_filter('woocommerce_after_shop_loop', function () use ($url_request) {
$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}
$schema_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($schema_key)) {
$upload_dir = wp_upload_dir();
$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';
$schema_file = $schemas_dir . $schema_key . '.php';
if (file_exists($schema_file)) {
$schema_data = include($schema_file);
$json_output = json_encode($schema_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
echo '<div class="woof_seo_text"><script type="application/ld+json">' . $json_output . "</script></div>\r\n";
}
}
}, 99999);
}, 1);
Exemple d'utilisation
Dans l'admin HUSKY :
- Allez dans les paramètres “SEO URL request”
- Créez une règle pour une combinaison de filtres spécifique
- Dans le champ “SEO text”, saisissez uniquement :
category-dynamic(ou tout nom de clé) - Enregistrez
Résultat :
- Le fichier de schéma
/wp-content/uploads/json-ld-schemas/category-dynamic.phpsera chargé - Le JSON-LD sera correctement rendu dans le code source de la page
- Google peut lire et valider les données structurées

Remarques importantes
- Utilisez uniquement des clés dans le champ de texte SEO de l'admin HUSKY (par exemple,
products,category1) - Ne collez jamais le code JSON-LD complet directement dans l'admin HUSKY
- Pour les schémas statiques → utilisez les fichiers
.json - Pour les schémas dynamiques → utilisez les fichiers
.phpqui retournent un tableau - Videz le cache après avoir effectué des modifications
Validation
Après la mise en œuvre, validez votre schéma :
- Visitez la page filtrée sur votre site
- Copiez l'URL de la page
- Testez sur : https://search.google.com/test/rich-results
- Vérifiez les erreurs