【问题标题】:Adding script, via plugins, in the admin head通过插件在管理头中添加脚本
【发布时间】:2020-12-31 22:41:16
【问题描述】:

我已经制作了一个 Wordpress 插件,我正在尝试将 javascript 添加到管理员头中。我试过但无法做到,有人可以帮忙吗?贝娄是我要的:

  function __construct() {        
    add_action('wp_head', 'wpb_hook_javascript');
  }

function wpb_hook_javascript() {
?>
    <script>
      // javscript code 
    </script>
<?php

}

【问题讨论】:

  • 太棒了!问题是什么?
  • @amarinediary dosent 像这样工作,进入插件文件,它只在 function.php 中工作,我想做一个将脚本放入 header 的插件
  • 如果以下答案之一对您有所帮助,请不要忘记投票并接受它。

标签: javascript php wordpress plugins


【解决方案1】:

注意:这只适用于前端。请参阅@amarinediary 的答案以了解正确的管理实现。

您添加钩子的代码当前位于__construct() 函数内,该函数只有在插件是 PHP 类时才会自动触发。尝试将 add_action 钩子去掉,并将其置于与其他函数相同的级别。

add_action('wp_head', 'wpb_hook_javascript');

function wpb_hook_javascript() {
?>
    <script>
      // javscript code 
    </script>
<?php

【讨论】:

  • wenn 与其他函数处于同一级别:解析错误:语法错误,意外 'if' (T_IF),期望函数 (T_FUNCTION) 或 const (T_CONST)
  • 对不起,@amarinediary,我在你写我的同时,编辑指向你的答案,因为你稍微快一点。 (我错过了他们正在寻找管理方面。)
【解决方案2】:

这行得通!

add_action( 'wp_head', array( $this, 'function_name' ));

【讨论】:

    【解决方案3】:

    您需要以下 OOP 结构化解决方案。

    class testing {
    
    public function __construct() {
       add_action( 'admin_head', array($this, 'admin_script'), 10 );
    }
    
    public function admin_script() {
      if ( is_admin() ) {
        echo '<script type="text/javascript">
    
        </script>';
      };
    }
    
    }  
    
    // class object/instance 
      new testing();
    

    【讨论】:

      【解决方案4】:

      您可以通过“admin_head”添加一个函数(最好在插件目录的根目录中),如下所示:

      function my_custom_admin_script() {
      
          // get the current files folder name.
          $my_plugin_name = trim( dirname( plugin_basename( __FILE__ ) ), '/' );
      
          // get the plugin directory and add folder name.
          $my_plugin_directory = plugins_url() . '/' . $my_plugin_name;
      
          // enqueue script.
          // See https://developer.wordpress.org/reference/functions/wp_enqueue_script/
          wp_enqueue_script( 'my-script-name-reference', $my_plugin_directory . '/js/my-script.js', array( 'jquery' ), filemtime( $my_plugin_directory . '/js/my-script.js' ), true );
      
      };
      add_action( 'admin_head', 'my_custom_admin_script' );
      

      /js/script.js 更改为脚本在插件结构中的位置。

      这将在 WordPress 管理屏幕上加载脚本 - 但不是块编辑器。如果您想在块编辑器中附加脚本,您应该将 admin_head 替换为 enqueue_block_editor_assets - see the docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        相关资源
        最近更新 更多