如何对函数包含2个参数的外部类使用ADD_ACTION?

时间:2019-06-02 作者:Nadia

我创建文件名custom.php 如下所示:

class customClass{ 
   function dothisfunction( $mobiles , $message ){
      //use parameters
   }
 }
在我的function.php 文件I添加以下代码:

$number = \'09112443986\';
$mymsg = \'nadia is testing\';
$myClass = new customClass();
add_action( \'publish_post\', array( $myClass ,\'dothisfunction\', $number, $mymsg ) );
但它返回错误,错误是:

PHP Warning: call\\u user\\u func\\u array()要求参数1是有效的回调,数组在C:\\xampp\\htdocs\\wp includes\\class wp hook中必须正好有两个成员。php在线288

我如何解决它?有人能帮我吗?

2 个回复
最合适的回答,由SO网友:gdarko 整理而成

这个publish_post post接受两个参数第一个是$ID 第二个是$post 实例(See codex). 我在下面修改了您的代码。

您的类几乎完全相同,只是重命名了函数的参数,以免造成混淆。

class customClass{ 
   function dothisfunction( $ID, $post ){
      echo "something";
   }
 }
不需要$number$mymsg 因为您只需要指定实例和要使用的实例方法。

$myClass = new customClass();
add_action( \'publish_post\', array( $myClass ,\'dothisfunction\' ), 10, 2 );
此外,还应指定要传递给的参数数量dothisfunction 在里面add_action 作为第四个参数。

SO网友:nmr

钩住你的方法dothisfunction 到操作publish_post, 您应该使用add_action() 这样做:

$myClass = new customClass();
add_action( \'publish_post\', array( $myClass, \'dothisfunction\' ), 10, 2 );
函数接受的参数数量在的第4个参数中指定add_action().

但是,此数目不能大于传入的参数数目do_action(), 因为它是do_action() 那个decides how many and what arguments 将传递给连接到特定动作挂钩的函数。

有关您可以阅读的操作的更多信息here.

相关推荐

Row actions not showing? Why?

我建造了一个WP_List_Table 显示在我构建的自定义主题页面上。尽管我查看了Internet上关于WP\\U List\\U表格的所有可能信息,但在显示行操作时遇到了一些问题。任何帮助都会很好!class Testimonials_List_Table extends WP_List_Table { function __construct() { parent::__construct( array( \'singular\'=> \'te