如何在发布新帖子时使用ADD_ACTION运行另一个函数?

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

我想在发布或更新新帖子时调用我的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 );

1 个回复
最合适的回答,由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将运行此操作,您所需要做的就是挂接它。

相关推荐

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