首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wordpress register_activation_hook

Wordpress register_activation_hook
EN

Stack Overflow用户
提问于 2017-09-28 13:35:52
回答 1查看 213关注 0票数 0

我正在写我的第一个Wordpress插件和有麻烦的register_activation_hook.我想要的是在register_activation_hook中声明一个变量,并在其中一个菜单页面上回显它。

我已经将我的代码分解成单独的文件,并在下面的两个文件中包含了一个简短的版本:

代码语言:javascript
运行
复制
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中,我使用:

代码语言:javascript
运行
复制
global $test;
echo $test;

我知道,test_plugin_settings.php的工作原理是我的代码有选项卡和其他在菜单页面中呈现的内容。但是,$test变量没有。

同样在函数test_plugin_install()中,我还创建了sql表.所以我知道这是可行的。有趣的是,只有在首次安装插件时才执行sql,即删除插件目录并清除sql表。

这让我认为register_activation_hook只是第一次被调用,而不是当插件被停用然后重新激活的时候。

这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 13:52:44

register_activation_hook将只在activation上触发,并用于安装一些选项或创建表,而admin_menu则需要在admin_init上触发(用于为wp-admin添加某些内容)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46470548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档