我不想在Wordpress中加入他的即时消息应用程序。即使在多个论坛中有多个相同的问题,我也找不到这个问题。
我的代码:intrachat。php
<?php
/*
Plugin Name: Intrachat
Plugin URI: *************
Description: Chattez en temps réel sur votre intranet
Version: 0.1
Author: *********
License: GPL2
*/
class Intrachat_Plugin
{
public function __construct()
{
include_once plugin_dir_path( __FILE__ ).\'/page_title.php\';
include_once plugin_dir_path( __FILE__ ).\'/chat.php\';
new IC_Page_Title();
$chat = new IC_Chat();
}
}
new Intrachat_Plugin();
?>
聊天。php:
<?php
class IC_Chat {
public function __construct()
{
add_action( \'init\', ic_show_chat_bar());
}
public function ic_show_chat_bar() {
if(is_user_logged_in()){
echo "<script>alert(\\"Connecté\\")</script>";
}
}
}
?>
我的问题:
致命错误:调用/var/www/vhosts/dev/html/wp-content/plugins/Intrachat/chat中未定义的函数ic\\u show\\u chat\\u bar()。php在线7
编辑:
尝试以下操作:
<?php
class IC_Chat {
public function __construct()
{
add_action( \'init\', array($this, \'ic_show_chat_bar()\'));
}
public function ic_show_chat_bar() {
if(is_user_logged_in()){
echo "<script>alert(\\"Connecté\\")</script>";
}
}
}
?>
还是相同的错误。
最合适的回答,由SO网友:Luis Sanz 整理而成
正如php错误中指出的,问题出现在“chat.php”文件的第7行:
add_action( \'init\', ic_show_chat_bar());
这条线有两个问题:
有效回调函数的正确语法应该不带括号,并用单引号括起来由于函数是在php类中声明的,除非我们将类实例本身作为参数传递,否则无法访问add\\u操作。由于函数不是静态的,我们可以使用$this来传递当前实例因此,在这种情况下,正确的语法是:
add_action( \'init\', array( $this, \'ic_show_chat_bar\' ) );
我建议访问代码参考
add_action() 同时阅读底部用户提供的注释,在这里可以找到几个使用类时如何使用操作的示例。