我正在写我的第一个Wordpress插件和有麻烦的register_activation_hook.我想要的是在register_activation_hook中声明一个变量,并在其中一个菜单页面上回显它。
我已经将我的代码分解成单独的文件,并在下面的两个文件中包含了一个简短的版本:
define('TEST_PLUGIN', rtrim( plugin_dir_path( __FILE__ ), '/' ));
function test_plugin_install() {
$test="TEST";
}
register_activation_hook( __FILE__, 'test_plugin_install' );
add_action( 'admin_menu', 'test_plugin_add_menu' );
function test_plugin_add_menu() {
add_menu_page( 'Test Plugin Page', 'Test Plugin', 'manage_options', 'test_plugin', 'test_plugin_settings' );
}
function test_plugin_settings() {
require( TEST_PLUGIN_DIR . '/test_plugin_settings.php' );
}在test_plugin_settings.php中,我使用:
global $test;
echo $test;我知道,test_plugin_settings.php的工作原理是我的代码有选项卡和其他在菜单页面中呈现的内容。但是,$test变量没有。
同样在函数test_plugin_install()中,我还创建了sql表.所以我知道这是可行的。有趣的是,只有在首次安装插件时才执行sql,即删除插件目录并清除sql表。
这让我认为register_activation_hook只是第一次被调用,而不是当插件被停用然后重新激活的时候。
这是正确的吗?
发布于 2017-09-28 13:52:44
register_activation_hook将只在activation上触发,并用于安装一些选项或创建表,而admin_menu则需要在admin_init上触发(用于为wp-admin添加某些内容)。
https://stackoverflow.com/questions/46470548
复制相似问题