函数不能处理主插件文件以外的任何文件

时间:2016-11-08 作者:Futaba Panda

我的插件有几个php文件,这些文件包含在主插件文件中。我在其他文件上使用了一些函数,但它们在那里不起作用。当我在主插件文件中使用它们时,它们就工作了。

例如

On the main plugin file "test-plugin.php"

<?php
/*
Plugin Name: Test Plugin
Description: test
Version: 1.0
*/

include_once( plugin_dir_path( __FILE__ ) . \'test-file.php\' );
On the other file "test-file.php" (same directory with test-plugin.php)

<?php

function enable_user_registration() {
    if(!get_option(\'users_can_register\')) {
        update_option( \'users_can_register\', \'1\' );
    }
}

register_activation_hook( plugin_dir_path(__FILE__), \'enable_user_registration\' );
问候。。

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

我想你应该使用register_activation_hook() 完整路径包括文件名,而不仅仅是路径:

register_activation_hook( plugin_dir_path(__FILE__) . \'test-plugin.php\', \'enable_user_registration\' );

SO网友:cybmeta

的第一个参数register_activation_hook()plugin filename including the path, 所以你需要__FILE__ 而不是plugin_dir_path( __FILE__ ).

// This should be in main plugin file
register_activation_hook( __FILE__, \'enable_user_registration\' );
function enable_user_registration() {
    if(!get_option(\'users_can_register\')) {
        update_option( \'users_can_register\', \'1\' );
    }
}
通常在主插件文件中注册激活挂钩,但是the callback can be defined in any file you wish.

例如,在测试文件中。php您可以定义回调:

function enable_user_registration() {
    if(!get_option(\'users_can_register\')) {
        update_option( \'users_can_register\', \'1\' );
    }
}
在主插件文件中,您可以注册激活挂钩:

/*
Plugin Name: Test Plugin
Description: test
Version: 1.0
*/

include_once( plugin_dir_path( __FILE__ ) . \'test-file.php\' );
register_activation_hook( __FILE__, \'enable_user_registration\' );
您还可以存储__FILE__ 来自常量中的主插件文件,因此无需对任何文件名或文件路径进行harcode:

/*
Plugin Name: Test Plugin
Description: test
Version: 1.0
*/

define( \'MY_PLUGIN_FILE_PATH\', __FILE__ );
define( \'MY_PLUGIN_DIR_PATH\', plugin_dir_path( __FILE__ ) );
include_once( MY_PLUGIN_DIR_PATH . \'test-file.php\' );
然后,在测试文件中。php:

register_activation_hook( MY_PLUGIN_FILE_PATH, \'enable_user_registration\' );
function enable_user_registration() {
    if(!get_option(\'users_can_register\')) {
        update_option( \'users_can_register\', \'1\' );
    }
}

相关推荐

Wodpress XML Import hooks

要将来自给定远程站点的帖子合并到给定类别下的一个站点中,我如何挂接导入插件以保存给定类别的帖子:给出的示例:接收方站点具有类别auto 我想从(例如)导入所有帖子auto.com 在下面this category. 如果远程帖子有另一个类别auto 添加为子级。应该下载内部帖子图片,更新帖子内的所有链接,因此我已经找到了一个核心方法,下面是我尝试的方法,但我认为这可以变得更简单<?php if (!class_exists(\'Wp_Http\')) in