使用do_action()将参数传递给函数类

时间:2016-05-23 作者:Patrick Dahm

我正在尝试开发一个“简单”的脚本,在这里我可以创建一个带有最后一次编辑时间戳的文件名。为此,我试图编写一个类,但在传递参数以添加\\u操作时遇到了问题。我将此脚本放置在函数中。php将根据我的意愿使用do\\u操作启动它。

class tme_form_filehash
{

    public $args;

    public function __construct( $args ) {
        $this->args = $args
        add_action( \'init_tme_form_filehash\', array($this, \'tme_form_filehash\'), $args );
    }

    public function tme_form_filehash( $args )
    {
        echo $args;
    }

}

$tme_form_filehash = new tme_form_filehash( $args );
在我的主题中

<?php do_action(\'init_tme_form_filehash\',\'hello\'); ?>
但在我希望的地方仍然没有回声。。。我做错了什么?

1 个回复
最合适的回答,由SO网友:Mimmo C. 整理而成

如果要将add\\u操作和do\\u操作与class对象结合应用,则必须使用静态函数来访问类。

使用您自己的措辞/变量尝试此代码:

class My_Plugin {

    protected static $_instance = null;

    // Static function used to access this class
    public static function get_instance() {
        if ( self::$_instance == null ) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    public function __construct() {
        add_action(\'MY_HOOK_NAME\', array($this, \'MY_HOOK_FUNCTION\'), $args);
    }

    public function MY_HOOK_FUNCTION($args) { 
        echo $args;
    }

}
然后初始化类:

My_Plugin::get_instance();
最后,您可以使用do\\u操作:

do_action(\'MY_HOOK_NAME\', \'hello my test\')

相关推荐

Use Post ID in functions.php

我的functions.php. 它工作得很好:当预订时,它会给我发电子邮件。易于理解的然而,我希望它能给我发送该预订的post ID,而不仅仅是“你好,世界!”消息帮助function add_to_system() { // get post meta // $email = get_post_meta(\'\',$post_id) // $post_id = get_queried_object_id(); mail(\'michael.mc