contact form7のjsとcssをcontactページにのみ読み込む

2015年9月30日

取り合えずググって出てきたものでは”Notice”がでたので以下のものに変更。
これで特に問題無しだったが某クライアントさんのトップページでjQueryが読み込まれない現象になった。
以下ふたとおりのやり方ではダメだったので探してみた結果、一番下のコードで回避できた。
結局最下部のコードではwpcf7関連のファイルは排除されず残っていたので、原因不明。
他のクライアントさんサイトでは問題なかったが、なぜか某クライアントさんのみjqueryが読み込まれない。
最終手段としてFunctions.phpに
wp_enqueue_scripts(‘jquery’);
をto-pageに読み込ませて対応。原因はっきりしないのがイヤな感じ。

// contact form 7 のファイルを必要な場合のみ読み込む
function wpcf7_file_control()
{
    add_filter("wpcf7_load_js", "__return_false");
    add_filter("wpcf7_load_css", "__return_false");

    if( is_page("contact") ){
        if( function_exists("wpcf7_enqueue_scripts") ) wpcf7_enqueue_scripts();
        if( function_exists("wpcf7_enqueue_styles") ) wpcf7_enqueue_styles();
    }
}
add_action("template_redirect", "wpcf7_file_control");

これでダメな場合もある。
さらに

/*
wpcf7Scripts iclude only contact page
*/
function contact_form_scripts(){
wp_deregister_script('contact-form-7');
wp_deregister_style('contact-form-7');
if (is_page('contact')) {
	if (function_exists( 'wpcf7_enqueue_scripts')) {
        wpcf7_enqueue_scripts();
	}
	if ( function_exists( 'wpcf7_enqueue_styles' ) ) {
	wpcf7_enqueue_styles();
	}
}
}
add_action( 'wp_enqueue_scripts', 'contact_form_scripts');

でもダメだったので以下のコードを。
これで回避できた。

/*
 contact form 7 のファイルを必要な場合のみ読み込む
*/
function wpcf7_file_control()
{
    add_filter("wpcf7_load_js", "__return_false");
    add_filter("wpcf7_load_css", "__return_false");
}
if ( $_SERVER['REQUEST_URI'] == "/contact/" ) {
    add_action( 'wp_enqueue_scripts', 'wpcf7_enqueue_scripts' );
    add_action( 'wp_enqueue_scripts', 'wpcf7_enqueue_styles' );
}
PAGE TOP