@charset "UTF-8";
/*
    Template: swell
    Theme Name: SWELL CHILD
    Theme URI: https://swell-theme.com/
    Description: SWELLの子テーマ
    Version: 1.0.0
    Author: LOOS WEB STUDIO
    Author URI: https://loos-web-studio.com/

    License: GNU General Public License
    License URI: http://www.gnu.org/licenses/gpl.html
*/
/**
* target="_blank" のリンクから noreferrer を除去してリファラを送る
* （noopener は維持）
*/
add_filter('wp_targeted_link_rel', function ($rel) {
    $rels = preg_split('/\s+/', trim((string)$rel));
    $rels = array_values(array_filter($rels));

    // noreferrer を削除
    $rels = array_values(array_diff($rels, ['noreferrer']));

    // 安全のため noopener は残す/付ける
    if (!in_array('noopener', $rels, true)) {
        $rels[] = 'noopener';
    }

    return implode(' ', $rels);
}, 999);

/**
* テーマ/プラグインが rel を直書きしている場合の保険（SWELLボタン等）
*/
function kv_strip_noreferrer_for_blank_links($html) {
    if (is_admin() || stripos($html, 'noreferrer') === false) return $html;

    $html = preg_replace_callback(
        '/<a\b[^>]*\btarget=("|\')_blank\1[^>]*>/i',
        function ($m) {
            $tag = $m[0];

            if (preg_match('/\brel=("|\')(.*?)\1/i', $tag, $rm)) {
                $q = $rm[1];
                $rels = preg_split('/\s+/', trim($rm[2]));
                $rels = array_values(array_diff(array_filter($rels), ['noreferrer']));

                if (empty($rels)) {
                    $tag = preg_replace('/\s*\brel=("|\')(.*?)\1/i', '', $tag);
                } else {
                    $tag = preg_replace('/\brel=("|\')(.*?)\1/i', 'rel='.$q.implode(' ', $rels).$q, $tag);
                }
            }
            return $tag;
        },
        $html
    );

    return $html;
}
add_filter('render_block', 'kv_strip_noreferrer_for_blank_links', 9999);
add_filter('the_content',  'kv_strip_noreferrer_for_blank_links', 9999);


