W3TotalCache 通过将其添加到 wp-config.php 将“WP_Cache”常量设置为 true:
/** Enable W3 Total Cache */
define('WP_CACHE', true); // Added by W3 Total Cache
当 WP_Cache 设置为 true 时,Contact Form 7 将进行您描述的 Ajax 调用。
这发生在 script.js 中:
if (_wpcf7.cached)
this.wpcf7OnloadRefill();
似乎只有在您使用验证码或测验时才需要该功能,如此处所指出:https ://wordpress.org/support/topic/plugin-contact-form-7-wpcf7onloadrefill-not-useful-and-引起负荷
为避免 ajax 调用,您可以将以下代码放在您的 functions.php 中:
// Hack Contact Form 7 to avoid unwanted ajax calls
// see http://stackoverflow.com/questions/19632244/is-w3-total-cache-compatible-with-contact-form-7
add_action('wpcf7_enqueue_scripts', 'hack_cf7');
function hack_cf7() {
$_wpcf7 = array(
'loaderUrl' => wpcf7_ajax_loader(),
'sending' => __( 'Sending ...', 'contact-form-7' )
);
wp_localize_script( 'contact-form-7', '_wpcf7', $_wpcf7 );
}
解释:
联系表格 7 添加了一些带有 wp_localize_script 的内联 javascript,当设置了 WP_CACHE 时看起来像这样:
var _wpcf7 = {
"loaderUrl":"http:\/\/elsassfonden.dk\/wp-content\/plugins\/contact-form-7\/images\/ajax-loader.gif",
"sending":"Sender ...",
"cached":"1"
};
当 WP_CACHE 未设置时,“缓存”属性将被忽略。这发生在 controller.php 中的函数 wpcf7_enqueue_scripts()
我提供的代码在 wpcf7_enqueue_scripts() 运行之后调用 wp_localize_script。这实际上插入了相同的内联代码,但没有“缓存”属性,就在联系表单 7 生成的内联代码下方。
享受!