HUSKY - Products Filter Professional for WooCommerce

Comment ajouter un balisage de schéma JSON-LD personnalisé par requête d'URL SEO

Problème

Le champ “Requête SEO URL” dans les filtres HUSKY <script> balises pour des raisons de sécurité, empêchant l'insertion directe de données structurées JSON-LD (balisage de schéma) 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 texte SEO, utilisez clés de schéma dans l'admin HUSKY et stocker le code JSON-LD réel dans des fichiers séparés ou functions.php.


Méthode 1 : Fichiers JSON statiques (Recommandé pour les schémas simples)

Étape 1 : Créer un dossier de fichiers schema

  • Naviguer vers /wp-content/uploads/
  • Créez un nouveau dossier : json-ld-schemas

Étape 2 : Créer des fichiers JSON schema

  • Créer des fichiers comme category1.json, products.json, etc.
  • À l'intérieur de chaque fichier, ajoutez du code JSON-LD pur (sans <script> tags) :
    {
        "@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'administration HUSKY (requête d'URL SEO → champ de texte SEO)

  • Entrez uniquement le clé de schéma (par exemple, category1)
  • N'entrez PAS le code JSON-LD complet

Méthode 2 : Fichiers PHP dynamiques (Pour les schémas dynamiques)

Étape 1 : Créer des fichiers de schéma PHP 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'administration HUSKY :

  1. Allez dans les paramètres "SEO URL request"
  2. Créer une règle pour une combinaison de filtres spécifique
  3. Dans le champ "Texte SEO", entrez uniquement : category-dynamic (ou tout autre nom de clé)
  4. Enregistrer

Résultat :

  • Le fichier de schéma /wp-content/uploads/json-ld-schemas/category-dynamic.php sera chargé
  • JSON-LD sera correctement rendu dans le code source de la page
  • Google peut lire et valider les données structurées


Notes importantes

  • Utilisez uniquement des clés dans le champ texte SEO de HUSKY admin (par exemple, products, category1)
  • Ne collez jamais code JSON-LD complet directement dans l'administration HUSKY
  • Pour les schémas statiques → utilisez .json fichiers
  • Pour les schémas dynamiques → utiliser .php fichiers qui retournent un tableau
  • Effacer le cache après avoir effectué des modifications

Validation

Après implémentation, validez votre schéma :

  1. Visitez la page filtrée sur votre site
  2. Copiez l'URL de la page
  3. Testez sur : https://search.google.com/test/rich-results
  4. Vérifier les erreurs