当前位置: 首页 > 知识库问答 >
问题:

Wordpress:注册\激活\挂钩不工作

阴高寒
2023-03-14

我目前正在写一个wordpress插件,我遇到了一些问题。我的功能在插件激活时不运行。。。谁能告诉我问题出在哪里?



class my_plugin {

    public $ajaxurl;
    public $excanvas;
    public $plugin_path = '';

    function __construct()
    {

        register_activation_hook(__FILE__,array(&$this, 'install'));
    }


    public function wpmon_install()
    {
        //Copy my page template to current theme.

        $plugin_path    =   getcwd() . DIRECTORY_SEPARATOR . 'wp-content'. DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'wpmon' . DIRECTORY_SEPARATOR;
        $target_path    =   get_stylesheet_directory(). DIRECTORY_SEPARATOR;
        $target_path    =   str_replace('/',DIRECTORY_SEPARATOR,$target_path);
        $template_files =   glob($plugin_path . 'page_template'.DIRECTORY_SEPARATOR.'*.php');

        foreach($template_files as $files)
        {
            $basename = basename($files);
            try{
                $target = $target_path . $basename;
                copy($files , $target);

            }
            catch(Exception $e){

                $this->log_error( $e->getMessage());
            }
        }
    } 

但不幸的是,安装功能不起作用......但当外部类中的代码安装功能是工作

共有3个答案

曹伟泽
2023-03-14

你有Wordpress试图调用一个函数称为安装在你的类,但它不存在。所以试着改变:

register_activation_hook(__FILE__,array(&$this, 'install'));

register_activation_hook(__FILE__,array(&$this, 'wpmon_install'));
程峻
2023-03-14

请检查如果你正在使用softlink,插件必须完全在/path/to/wordpress/wp-Content/plugins/your plugin中,意思是说your plugin不是一个softlink。

乐修远
2023-03-14

从发布的代码我可以看到两个问题。安装应该改为wpmon_install。还应该添加一些代码来初始化类。

$wp_mon=newmy_plugin();后的类my_plugin{}

 类似资料:
  • 我正在尝试为短代码创建一个插件。但我的激活钩不起作用。插件在我的页面中被激活,但在我的代码中没有任何东西可以工作,比如:我的 请帮帮我。我卡住了

  • 我写我的第一个WordPress插件和有问题的register_activation_hook......我想要的是在register_activation_hook中声明一个变量,并在其中一个菜单页面上进行响应。 我已经把我的代码分解成单独的文件,并在下面的两个文件中包含了一个简短的版本: 在test_plugin_settings.php我使用: 我知道test_plugin_settings

  • 我的文件夹: 在文件my-plugin.php: 在文件class-my-plugin.php: 但当我激活或停用时,它不起作用。有人能帮我吗?

  • 安装帮助 有关安装问题的帮助信息,请访问安装支持中心,网址是 www.adobe.com/go/cs4install_cn。 许可激活 在安装过程中,您的 Adobe 软件会联系 Adobe 以完成许可激活过程。不会传输个人数据。有关产品激活的详细信息,请访问 Adobe 官方网站 www.adobe.com/go/activation_cn。 单用户零售许可激活支持两台计算机。例如,您可以在办公

  • 问题内容: 我正在学习有关如何使用钩子注册事件的Udemy课程,讲师给出了以下代码: 现在效果很好,但我不认为这是正确的方法。原因是,如果我理解正确,则每次重新渲染时,事件都会每次都在注册和注销,并且我根本认为这样做不是正确的方法。 所以我对下面的钩子做了一些修改 通过使用一个空数组作为第二个参数,使组件只运行一次效果,即模仿。当我尝试结果时,奇怪的是,在我键入的每个键上都没有附加,而是被覆盖了。

  • 问题内容: 使用Java 8 API,我想按照以下方式注册“完成钩子”: 之所以要这样做,是因为我想将资源包装在供API客户端使用的资源中,并且我希望资源一旦被使用就自动清除。如果可能的话,客户可以致电: 而不是当前需要什么: 理想情况下,我想了解的各种方法,例如: 使用现有的JDK 8 API有没有简便的方法? 问题答案: 除了基于解决方案(由@Holger提出)以外,任何拦截终端操作的解决方案