Plugin_action_link_{$plugin_file}挂接不在主插件文件中

时间:2017-03-28 作者:leemon

我正在开发一个插件,并将其代码组织在不同的文件中。admin functions文件位于/admin 子文件夹。在这个文件中,我将脚本和样式排队,添加元框等等。

我想使用plugin_action_links_{$plugin_file} 钩子,但我不能让它工作。

由于此挂钩是在主插件文件之外添加的,因此不起作用:

add_filter( \'plugin_action_links_\' . plugin_basename( __FILE__ ),  array( $this, \'add_action_links\' ) );
我的问题是,我怎样才能得到plugin_basename() 子文件夹中不同文件中的主插件文件?有可能吗?

提前感谢

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

您只需将basename存储在主文件中的一个变量中,并在管理文件中引用该变量即可。

如果您使用的是我根据示例代码确定的类,那么只需在主类中创建一个静态属性,并在admin类中引用该属性即可:

class My_Plugin {
    static $basename = null;

    public function __construct {
        $this->basename = plugin_basename(__FILE__);
    }
}

class My_Plugin_Admin {
    public function change_action_links() {
        add_filter( \'plugin_action_links_\' . My_Plugin::$basename,  array( $this, \'add_action_links\' ) );
    }
}