【问题标题】:contact form 7 in wordpress how to include javascript src in bodywordpress中的联系表格7如何在正文中包含javascript src
【发布时间】:2017-06-24 01:42:48
【问题描述】:

我正在使用 wordpress 和联系表格 7 插件。 我想要完成的是一些下拉菜单填充了自定义 javascript,我知道你可以将它包含在另一个插件“脚本和东西”中。但我想把它放在一个单独的文件中,并使用脚本 src="http://example.org/myscript.js" (使用插件创建的实际表单)将文件包含在联系表单的正文标签中

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

【问题讨论】:

    标签: javascript wordpress plugins contact-form-7


    【解决方案1】:

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

    1. 您可以在 cf7 表单编辑器中的表单底部插入 <script>with your js code</script>,这样脚本仅在表单打印在页面上时加载。但是,请确保您没有在 js 代码中添加任何新行空格,否则 cf7 插件将插入空的 <p></p> 元素,这将在执行时破坏您的代码。或者,
    2. 如果您正在运行 WP4.7,您现在可以使用此版本中引入的 do_shortcode_tag 在打印表单的同一页面上实际排队您的脚本,但请记住早先注册该脚本首先,

      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;
      }
      

    【讨论】:

    • 感谢您提供了非常丰富的回复,但是对于自学初学者来说,第二种选择有点困难。无论如何你可以添加更多//注释//来解释脚本的作用吗?一步一步来?
    • 它做了两件事:钩子wp_enqueue_scripts,它允许您将要添加到页眉或页脚的脚本排队或注册。 register 和 enqueue 之间的区别在于 register 只会执行此操作,但不会在页面上实际打印脚本,除非您在打印实际页面之前将其入队。
    • 第二步是挂钩do_shortcode_tag 允许您在打印之前识别/修改页面上调用的任何短代码。因此,这允许您识别正在打印的 cf7 表单,然后将您之前注册的脚本排入队列以确保它打印在页面上(页眉或页脚取决于您的注册方式)
    • 是的。感谢您的跟进,非常感谢您的意见
    • @sim555 太好了,您能否批准答案并投赞成票
    猜你喜欢
    • 2021-01-08
    • 2018-12-12
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多