SEO対策等で、様々な事情によりAll in One SEOプラグインで自動出力される構造化データからパンくずのデータのみ削除することがあります。
最新の All in One SEOプラグインではパンくずの構造化データはその他のデータと合わせて一括で出力されており、個別に機能をカットすることができません(確認環境:バージョン 4.7.9.1)。
ですのでfunctions.phpに下記のコードを記述することで出力をカットします。
// All in One SEOのJSON-LDスキーマからパンくずリストを除外
add_filter('aioseo_schema_output', 'remove_breadcrumb_schema', 10, 1);
function remove_breadcrumb_schema($schema)
{
if (empty($schema) || !is_array($schema)) {
return $schema;
}
// スキーマの配列を再帰的に処理
$schema = array_reduce(array_keys($schema), function ($carry, $key) use ($schema) {
$item = $schema[$key];
// BreadcrumbListタイプのスキーマをスキップ
if (isset($item[‘@type’]) && $item[‘@type’] === ‘BreadcrumbList’) {
return $carry;
}
// 配列の場合は再帰的に処理
if (is_array($item)) {
$processed = remove_nested_breadcrumbs($item);
if (!empty($processed)) {
$carry[$key] = $processed;
}
} else {
$carry[$key] = $item;
}
return $carry;
}, []);
return $schema;
}
/**
* ネストされたスキーマからパンくずリストを除外
*/
function remove_nested_breadcrumbs($data)
{
if (!is_array($data)) {
return $data;
}
// BreadcrumbListタイプの場合は除外
if (isset($data[‘@type’]) && $data[‘@type’] === ‘BreadcrumbList’) {
return null;
}
// 配列の各要素を再帰的に処理
return array_reduce(array_keys($data), function ($carry, $key) use ($data) {
$item = $data[$key];
if (is_array($item)) {
$processed = remove_nested_breadcrumbs($item);
if (!empty($processed)) {
$carry[$key] = $processed;
}
} else {
$carry[$key] = $item;
}
return $carry;
}, []);
}
■□■□■□■□■□■□■□■□■□■□
営業時間:平日9:00〜18:00
●福岡オフィス
〒810-0042
福岡市中央区赤坂1-12-6 赤坂Sビル2F
TEL:092-726-5550 FAX:092-726-5558
●宮崎出張所
〒880-0001
宮崎県宮崎市橘通西3-10-32
宮崎ナナイロ東館8FATOMica内
⇒ メールでのお問合せ
⇒ ホームページ制作実績
⇒ 会社案内
■□■□■□■□■□■□■□■□■□■□