• I have this error:

    Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘mc_script’ was given in /home5/optimal9/public_html/wp-includes/plugin.php

    It’s probably being caused by my new script in functions.php.

    It’s based on an Art Of Blog post about customizing a Mailchimp Signup Form (https://www.artofblog.com/styling-a-mailchimp-form/)

    I don’t know what is causing this error — the script works just fine. But I need to fix whatever’s causing the warning because users can see it.

    Here is the functions.php function I added:

    //add mailchimp scripts before body close
    function mailchimp_scripts() { ?>
    <script type="text/javascript">
    var mc_custom_error_style = '';
    </script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script type="text/javascript" src="https://downloads.mailchimp.com/js/jquery.validate.js"></script>
    <script type="text/javascript" src="https://downloads.mailchimp.com/js/jquery.form.js"></script>
    <script type="text/javascript">
    var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';
    try {
        var jqueryLoaded=jQuery;
        jqueryLoaded=true;
    } catch(err) {
        var jqueryLoaded=false;
    }
    var head= document.getElementsByTagName('head')[0];
    if (!jqueryLoaded) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
        head.appendChild(script);
        if (script.readyState && script.onload!==null){
            script.onreadystatechange= function () {
                  if (this.readyState == 'complete') mce_preload_check();
            }
        }
    }
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'https://downloads.mailchimp.com/js/jquery.form-n-validate.js';
    head.appendChild(script);
    var err_style = '';
    try{
        err_style = mc_custom_error_style;
    } catch(e){
        err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;';
    }
    var head= document.getElementsByTagName('head')[0];
    var style= document.createElement('style');
    style.type= 'text/css';
    if (style.styleSheet) {
      style.styleSheet.cssText = '.mce_inline_error {' + err_style + '}';
    } else {
      style.appendChild(document.createTextNode('.mce_inline_error {' + err_style + '}'));
    }
    head.appendChild(style);
    setTimeout('mce_preload_check();', 250);
    
    var mce_preload_checks = 0;
    function mce_preload_check(){
        if (mce_preload_checks>40) return;
        mce_preload_checks++;
        try {
            var jqueryLoaded=jQuery;
        } catch(err) {
            setTimeout('mce_preload_check();', 250);
            return;
        }
        try {
            var validatorLoaded=jQuery("#fake-form").validate({});
        } catch(err) {
            setTimeout('mce_preload_check();', 250);
            return;
        }
        mce_init_form();
    }
    function mce_init_form(){
        jQuery(document).ready( function($) {
          var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){}  };
          var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
          $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
          options = { url: 'https://optimalwellnessctr.us2.list-manage.com/subscribe/post-json?u=9a44e161628c147fa7dbd983e&id=dc92b30340&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
                        beforeSubmit: function(){
                            $('#mce_tmp_error_msg').remove();
                            $('.datefield','#mc_embed_signup').each(
                                function(){
                                    var txt = 'filled';
                                    var fields = new Array();
                                    var i = 0;
                                    $(':text', this).each(
                                        function(){
                                            fields[i] = this;
                                            i++;
                                        });
                                    $(':hidden', this).each(
                                        function(){
                                            var bday = false;
                                            if (fields.length == 2){
                                                bday = true;
                                                fields[2] = {'value':1970};//trick birthdays into having years
                                            }
                                        	if ( fields[0].value=='MM' && fields[1].value=='DD' && (fields[2].value=='YYYY' || (bday && fields[2].value==1970) ) ){
                                        		this.value = '';
    									    } else if ( fields[0].value=='' && fields[1].value=='' && (fields[2].value=='' || (bday && fields[2].value==1970) ) ){
                                        		this.value = '';
    									    } else {
    	                                        this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value;
    	                                    }
                                        });
                                });
                            return mce_validator.form();
                        },
                        success: mce_success_cb
                    };
          $('#mc-embedded-subscribe-form').ajaxForm(options);      
    
        });
    }
    function mce_success_cb(resp){
        $('#mce-success-response').hide();
        $('#mce-error-response').hide();
        if (resp.result=="success"){
            $('#mce-'+resp.result+'-response').show();
            $('#mce-'+resp.result+'-response').html(resp.msg);
            $('#mc-embedded-subscribe-form').each(function(){
                this.reset();
        	});
        } else {
            var index = -1;
            var msg;
            try {
                var parts = resp.msg.split(' - ',2);
                if (parts[1]==undefined){
                    msg = resp.msg;
                } else {
                    i = parseInt(parts[0]);
                    if (i.toString() == parts[0]){
                        index = parts[0];
                        msg = parts[1];
                    } else {
                        index = -1;
                        msg = resp.msg;
                    }
                }
            } catch(e){
                index = -1;
                msg = resp.msg;
            }
            try{
                if (index== -1){
                    $('#mce-'+resp.result+'-response').show();
                    $('#mce-'+resp.result+'-response').html(msg);
                } else {
                    err_id = 'mce_tmp_error_msg';
                    html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>';
    
                    var input_id = '#mc_embed_signup';
                    var f = $(input_id);
                    if (ftypes[index]=='address'){
                        input_id = '#mce-'+fnames[index]+'-addr1';
                        f = $(input_id).parent().parent().get(0);
                    } else if (ftypes[index]=='date'){
                        input_id = '#mce-'+fnames[index]+'-month';
                        f = $(input_id).parent().parent().get(0);
                    } else {
                        input_id = '#mce-'+fnames[index];
                        f = $().parent(input_id).get(0);
                    }
                    if (f){
                        $(f).append(html);
                        $(input_id).focus();
                    } else {
                        $('#mce-'+resp.result+'-response').show();
                        $('#mce-'+resp.result+'-response').html(msg);
                    }
                }
            } catch(e){
                $('#mce-'+resp.result+'-response').show();
                $('#mce-'+resp.result+'-response').html(msg);
            }
        }
    }
    
    </script>
    <?php }
    add_action('thematic_after', 'mc_script');
    // end mailchimp scripts
    //
    // add mailchimp signup div
    function my_signup_div() {?>
    <div class="signup-form">
    <form action="https://optimalwellnessctr.us2.list-manage2.com/subscribe/post?u=9a44e161628c147fa7dbd983e&id=dc92b30340" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
        <input type="text" value="Enter Email Address" name="EMAIL" class="form_field"onblur="if (this.value == '') {this.value = 'Email Address';}" onfocus="if (this.value == 'Enter Email Address') {this.value = '';}"/>  <span style="font-weight: bold; color: #feebcf;">&laquo; Newsletter </span>
        <div class="signup-deets">
        <input type="text" value="First Name" name="FNAME" class="form_field" onblur="if (this.value == '') {this.value = 'First Name';}" onfocus="if (this.value == 'First Name') {this.value = '';}"/>
        <input type="submit" value="Get Started!" name="subscribe" class="form_button" tabindex=3 />
    </form>
        <h3>Receive our Optimal Wellness Update about once per month.  Free.  I'll share my latest insights to help you feel and live better.  <br /><br />Your address is kept strictly private.</h3>
        </div>
    </div>
    <?php }
    add_action('thematic_header','my_signup_div', 5);
    // end add mailchimp signup div

  • The topic ‘Warning call_user_func_array() – how to fix?’ is closed to new replies.