联系wordpress中的form 7如何在正文中包含javascript src

联系wordpress中的form 7如何在正文中包含javascript src,javascript,wordpress,plugins,contact-form-7,Javascript,Wordpress,Plugins,Contact Form 7,我正在使用wordpress,请联系Form7插件。 我试图实现的是,一些下拉菜单中填充了自定义javascript,我知道您可以将其与另一个插件“Scripts and Stuff”一起使用。但是我想把它放在一个单独的文件中,并用脚本src=”将该文件包含在联系人表单的body标记中http://example.org/myscript.js“(使用插件创建的实际表单) 编辑:我不想将其添加到主题的footer.php中,我希望脚本src仅位于单个页面上。不是整个主题当然,这很直接。有两种方法

我正在使用wordpress,请联系Form7插件。 我试图实现的是,一些下拉菜单中填充了自定义javascript,我知道您可以将其与另一个插件“Scripts and Stuff”一起使用。但是我想把它放在一个单独的文件中,并用脚本src=”将该文件包含在联系人表单的body标记中http://example.org/myscript.js“(使用插件创建的实际表单)


编辑:我不想将其添加到主题的footer.php中,我希望脚本src仅位于单个页面上。不是整个主题

当然,这很直接。有两种方法可以实现这一点

  • 您可以在cf7表单编辑器中的表单底部插入一个带有js代码的
    ,这样,只有当表单打印在页面上时,脚本才会加载。但是,请确保不要在js代码中添加任何新行和空格,否则cf7插件将插入空的

    元素,这将在执行时中断代码。或者
  • 如果您正在运行WP4.7,您现在可以使用本版本中引入的将脚本放入打印表单的同一页面,但请记住先注册该脚本

    add_filter('wp_enqueue_scripts', 'register_my_script');
    function register_my_script(){
      wp_register_script( 'my-script', get_stylesheet_directory_uri() . 'js/my-script.js', array( 'jquery' ), "1.0" , false );
    }
    add_filter('do_shortcode_tag', 'enqueue_my_script',10,3);
    function enqueue_my_script($output, $tag, $attr){
      if('contact-form-7' != $tag){ 
        return $output; //make sure we filter cf7 shortcodes
      }
      if(isset($attr['id']) && '4' == $attr['id']){
        wp_enqueue_script('my-script'); //enqueue if it is form id=4
      }
      return $output;
    }
    

  • 当然,这很直截了当。有两种方法可以实现这一点

  • 您可以在cf7表单编辑器中的表单底部插入一个带有js代码的
    ,这样,只有当表单打印在页面上时,脚本才会加载。但是,请确保不要在js代码中添加任何新行和空格,否则cf7插件将插入空的

    元素,这将在执行时中断代码。或者
  • 如果您正在运行WP4.7,您现在可以使用本版本中引入的将脚本放入打印表单的同一页面,但请记住先注册该脚本

    add_filter('wp_enqueue_scripts', 'register_my_script');
    function register_my_script(){
      wp_register_script( 'my-script', get_stylesheet_directory_uri() . 'js/my-script.js', array( 'jquery' ), "1.0" , false );
    }
    add_filter('do_shortcode_tag', 'enqueue_my_script',10,3);
    function enqueue_my_script($output, $tag, $attr){
      if('contact-form-7' != $tag){ 
        return $output; //make sure we filter cf7 shortcodes
      }
      if(isset($attr['id']) && '4' == $attr['id']){
        wp_enqueue_script('my-script'); //enqueue if it is form id=4
      }
      return $output;
    }
    

  • 感谢您提供的信息丰富的回复,但是对于自学成才的初学者来说,第二个选项有点难。您是否还可以添加一些//注释//来解释脚本的功能?一步一步?它做两件事:挂钩,它允许你排队或注册一个你想添加到页眉或页脚的脚本。register和enqueue之间的区别在于,register只会这样做,但实际上不会在页面上打印脚本,除非您在打印实际页面之前将脚本排入队列。第二步是挂接
    do\u shortcode\u标记
    允许您在打印页面之前识别/修改页面上调用的任何短代码。因此,您可以识别正在打印的cf7表单,然后将以前注册的脚本排队,以确保它打印在页面上(页眉或页脚取决于注册方式)是。谢谢你的跟进,我非常感谢你的支持input@sim555太好了,你能同意这个答案吗?谢谢你的回答,但是第二个选择对自学初学者来说有点难。您是否还可以添加一些//注释//来解释脚本的功能?一步一步?它做两件事:挂钩,它允许你排队或注册一个你想添加到页眉或页脚的脚本。register和enqueue之间的区别在于,register只会这样做,但实际上不会在页面上打印脚本,除非您在打印实际页面之前将脚本排入队列。第二步是挂接
    do\u shortcode\u标记
    允许您在打印页面之前识别/修改页面上调用的任何短代码。因此,您可以识别正在打印的cf7表单,然后将以前注册的脚本排队,以确保它打印在页面上(页眉或页脚取决于注册方式)是。谢谢你的跟进,我非常感谢你的支持input@sim555太好了,你能批准这个答案并投票表决吗