Javascript 通过插件在管理头中添加脚本

Javascript 通过插件在管理头中添加脚本,javascript,php,wordpress,plugins,Javascript,Php,Wordpress,Plugins,我已经制作了一个Wordpress插件,我正在尝试将javascript添加到管理头部。我试过了,但没能成功,有人能帮忙吗?下面是我要说的: function __construct() { add_action('wp_head', 'wpb_hook_javascript'); } function wpb_hook_javascript() { ?> <script> // javscript code &l

我已经制作了一个Wordpress插件,我正在尝试将javascript添加到管理头部。我试过了,但没能成功,有人能帮忙吗?下面是我要说的:

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

function wpb_hook_javascript() {
?>
    <script>
      // javscript code 
    </script>
<?php
函数uu构造(){
添加动作('wp_head','wpb_hook_javascript');
}
函数wpb_hook_javascript(){
?>
//javscript代码

您应该使用
admin\u head
操作挂钩

<?php
add_action( 'admin_head', 'admin_script' );
function admin_script() {
  if ( is_admin() && strpos( $_SERVER[ 'REQUEST_URI' ], 'edit-tags.php?taxonomy=category' ) ) {
    echo '<script type="text/javascript">

    </script>';
  };
}; ?>

使用
$\u SERVER['REQUEST\u URI']
我们还可以在管理端指定页面,以改进条件脚本加载。例如,这里,我们仅在管理控制台的帖子类别管理页面上运行脚本

正如在评论中指出的,
是_admin()
在这里只是作为冗余


了解更多
  • admin\u head
    @

注意:这仅适用于前端。有关正确的管理实施,请参阅@amarinediary的答案。

要添加钩子的代码当前位于
\u construct()
函数中,该函数只有在插件是PHP类时才会自动触发。请尝试从该函数中取出
add\u操作
钩子,并将其置于与另一个函数相同的级别

add_action('wp_head', 'wpb_hook_javascript');

function wpb_hook_javascript() {
?>
    <script>
      // javscript code 
    </script>
<?php
add_action('wp_head','wpb_hook_javascript');
函数wpb_hook_javascript(){
?>
//javscript代码

您需要以下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();
类测试{
公共函数构造(){
添加动作('admin_head',数组($this,'admin_script'),10);
}
公共函数管理脚本(){
if(is_admin()){
回声'
';
};
}
}  
//类对象/实例
新测试();
这很有效

add_action( 'wp_head', array( $this, 'function_name' ));
您可以通过“”添加函数(最好在插件目录的根目录中),如下所示:

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\u head
替换为
enqueue\u Block\u Editor\u assets
-。

太好了!问题是什么?@amarinediary dosent这样工作,插入插件文件,它只在功能上工作.php,我想做一个插件,用于将脚本放入标题。如果下面的一个答案对您有所帮助,请不要忘记投票并接受它。wenn与另一个函数处于同一级别:解析错误:语法错误、意外的“if”(t_-if)、预期函数(t_-function)或常量(t_-const)抱歉,@amarinediary,我在写我的日记的时候你也在写,因为你的速度稍微快了一点,我没有注意到他们在寻找管理员方面。
是_admin()
admin\u head
钩子上是不必要的,因为它只在已经包含上下文的管理页面上触发