wordpress主题在启用时有个叫做after_switch_theme的动作钩子,挂载函数到该钩子上可以方便我们实现一些主题的扩展功能,如创建数据表等操作。wordpress核心中埋下了很多动作钩子过滤器,个人觉得这东西就像是C#中的委托事件一样,用户注册事件并委托指定函数执行内容。如果不能理解WP的钩子可以参考下,触类旁通。
复制
do_action( 'after_switch_theme', string $old_name, WP_Theme $old_theme )
如果旧主题仍然存在,则在主题切换后的第一个WP加载上触发。
描述
此操作多次触发,如果旧主题存在或不存在,则参数根据上下文的不同而不同。如果旧主题缺失,参数将是旧主题的片段。
参数
- $old_name
(字符串) 旧主题名称 - $old_theme
(WP_Theme) 旧主题的WP_Theme实例。
简单使用
如下代码将在启用主题时,创建一张数据表:
复制
//创建test数据表 add_action( 'after_switch_theme', 'create_level_table' ); function create_level_table(){ global $wpdb; $table_name =$wpdb->prefix ."test"; if($wpdb->get_var("show tables like $table_name") != $table_name) { $sql ="CREATE TABLE `".$table_name."` ( `userid` INT NOT NULL , `body` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL );"; require_once(ABSPATH . "wp-admin/includes/upgrade.php"); dbDelta($sql); } }
与之对应的,除了启用激活主题钩子外,还有取消激活时的动作钩子switch_theme,除了使用after_switch_theme钩子之外,还可以使用load-themes.php钩子,它将在用户访问主题设置时启动。
评论 (0)