我想在发布或更新新帖子时调用我的customClass。但在我添加之后add_action 根据我的代码,即使在发布新帖子之前,该函数也会运行多次。有人能帮我吗?正确的解决方案是什么?我已经找了几天了,但没有找到正确的答案。
custom.php
class customClass{
function dothisfunction($mobiles , $message ){
//send sms to $mobiles number with $message body
}
}
function.php:包括(\'custom.php\')$手机=\'09112443344\'$消息=\'新消息测试\';
$myClass = new customClass();
add_action( \'publish_post\', array( $myClass ,\'dothisfunction\'), 10, 2 );//
do_action( \'publish_post\', $mobiles, $message );
最合适的回答,由SO网友:Paul G. 整理而成
你在一定程度上做到了。这是您应该使用的代码:
add_action( \'publish_post\', array( $myClass ,\'dothisfunction\' ), 10, 2 );
您不能将参数传递给正在执行的操作。你只能在do_action
调用,以及添加到该操作的任何参数。如果有需要该函数的特定变量dothisfunction
要获得最初未随活动一起发送的内容,您必须从其他地方获取。
您不能向挂钩“添加”更多参数-您只能获取随挂钩一起发送的变量。
因此,您可能可以执行以下操作:
class customClass {
public $smsMobileNumber;
public $message;
function dothisfunction( $postId, $post ) {
$fullMessage = sprintf( $this->message, $postId, $post->post_title );
// code to send SMS message
}
}
$myClass = new customClass();
$myClass->smsMobileNumber = \'012345456\';
$myClass->message = \'Post published with ID %s and title %s\';
add_action( \'publish_post\', array( $myClass ,\'dothisfunction\' ), 10, 2 );
因此,您可以在这里看到,您正在自定义类中填充您的SMS手机号码和消息模板,然后连接到publish_post
行动然后,您创建一条包含您的新帖子ID的消息,并拥有发送SMS消息的代码。您将在函数中看到dothisfunction
我只能使用此操作中最初发送的参数。在本例中,在我查看WordPress源代码之后,我看到这个钩子是用两个参数触发的:post ID和post本身。那是all 我可以在挂钩函数中使用。我必须以另一种方式自己提供任何其他参数。
还值得注意的是your code doesn\'t 需要打电话do_action
. WordPress将运行此操作,您所需要做的就是挂接它。