HUSKY - Products Filter Professional for WooCommerce

SEO URLリクエストごとにカスタムJSON-LDスキーママークアップを追加する方法

問題

HUSKYフィルターの「SEO URLリクエスト」フィールド <script> JSON-LD 構造化データ(スキーママークアップ)の直接挿入を防ぐためのセキュリティ上の理由からタグを使用します。Google リッチリザルト用。

Solution Overview

SEO テキストフィールドに完全な JSON-LD コードを直接挿入する代わりに、 スキーマキー HUSKY 管理で、実際の JSON-LD コードを個別のファイルまたは functions.php に保存します。


方法1:静的JSONファイル(シンプルなスキーマに推奨)

ステップ 1: スキーマファイルフォルダを作成

  • Navigate to /wp-content/uploads/
  • 新しいフォルダを作成: json-ld-schemas

ステップ 2: JSON スキーマファイルを作成する

  • のようなファイルを作成する category1.json, products.json、など。
  • 各ファイル内に、純粋なJSON-LDコード(〜なし)を追加してください <script> tags):
    {
        "@context": "https://schema.org", 
        "@type": "CollectionPage", 
        "name": "Product Category", 
        "description": "Category description"
    }

ステップ 3: このコードを次に追加します 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);

ステップ 4: HUSKY管理画面(SEO URLリクエスト → SEOテキストフィールド)

  • ~のみ入力してください スキーマキー (例: category1)
  • JSON-LDコード全体を入力しないでください

方法2: 動的PHPファイル (動的スキーマ用)

ステップ 1: PHPスキーマファイルを〜に作成します /wp-content/uploads/json-ld-schemas/

例: 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;

ステップ 2: このコードを次に追加します 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);

 


使用例

HUSKY 管理画面で:

  1. 「SEO URL リクエスト」設定に移動します
  2. 特定のフィルターの組み合わせに対するルールを作成する
  3. 「SEOテキスト」フィールドには、次のみを入力してください: category-dynamic (または任意のキー名)
  4. 保存

結果:

  • スキーマファイル /wp-content/uploads/json-ld-schemas/category-dynamic.php はロードされます
  • JSON-LDはページソースで正しくレンダリングされます
  • Google は構造化データを読み取り、検証できます


重要事項

  • キーのみを使用する HUSKY 管理の SEO テキストフィールドで (例: products, category1)
  • ペーストしないでください JSON-LD コード全体を HUSKY 管理者に直接
  • 静的スキーマの場合は → を使用します .json ファイル
  • 動的スキーマの場合は→使用 .php 配列を返すファイル
  • 変更後にキャッシュをクリア

検証

実装後、スキーマを検証してください:

  1. サイトでフィルタリングされたページにアクセスする
  2. ページのURLをコピー
  3. テスト先: https://search.google.com/test/rich-results
  4. エラーをチェック