[wp]cf7のインライン記述対策

ベータ版。

どういうアレか

<form>の直下、input[type=”hidden”]を格納してる<div>にインラインの記述がある。

<div style="display: none;">
<input type="hidden" name="_wpcf7" value="12" />
<input type="hidden" name="_wpcf7_version" value="5.7.7" />
<input type="hidden" name="_wpcf7_locale" value="en_US" />
︙

csp的なやつからするとインライン要素はめっちゃ嫌われてるんで、取り除く必要がある。

それをやっていく。

プラグインを直接修正する

プラグインを更新すると吹っ飛ぶのでぶっちゃけ無意味なんだけど。

contact-form-7/includes/contact-form.phpの718行目にある。

		return '<div style="display: none;">' . "\n" . $content . '</div>' . "\n";

style属性を削除。

		return '<div>' . "\n" . $content . '</div>' . "\n";

<div>に直接スタイルが入ってる場合はclassを付けて、cssファイルや<style>で非表示にする。

functions.phpで修正する

全拒否するだろうからページ別の条件分岐無くてもいいっちゃいいんだけど。

add_action('after_setup_theme', function(){
    if(is_admin()) return;
    ob_start(function ($buffer_html) {
        if(is_page('form')){
            $buffer_html = str_replace('<div style="display: none;">', '<div>', $buffer_html);
        }
        return $buffer_html;
    });
}, 10000);

そんな感じで。

コメント

タイトルとURLをコピーしました