仅在第一次激活期间对主题激活运行代码

时间:2019-06-24 作者:The WP Intermediate

function clearwidgets(){
  //stuff here only runs once, when the theme is activated for the 1st time
}

register_activation_hook(__FILE__, \'clearwidgets\');
我试图执行的代码是:

    add_filter( \'sidebars_widgets\', \'unset_sidebar_widget\' );

function unset_sidebar_widget( $sidebars_widgets ) {
unset( $sidebars_widgets[ \'$sidebar_id\' ] );
return $sidebars_widgets;
}
这意味着第一次安装主题时,应该清除WordPress设置的所有默认小部件。

因为没有达到预期的结果,我哪里做错了?请向我建议修复方法或指导我的方向,以便我可以进行故障排除。

1 个回复
SO网友:ChristopherJones

使用WordPress Options API存储标志(无论是否为第一个开关)怎么样:https://codex.wordpress.org/Options_API

<?php
  add_action(\'after_switch_theme\', \'setup_theme_options\');

  function setup_theme_options () {
    if(get_option(\'first_theme_activation\') === false){
      // Set a flag if the theme activation happened
      add_option(\'first_theme_activation\', true, \'\', false);

      // stuff here only runs once, when the theme is activated for the 1st time
    }
  }
回到Jacob Peattie的便条上,register_activation_hook() 用于插件使用,不用于主题切换。而令人不安的内容可能会变得棘手,因为你不知道那里有什么。

不管怎样,我希望这些答案能有所帮助!

相关推荐

AJAX是一个php文件,其中包含高级定制字段

我正在尝试在一个使用高级自定义字段的php文件中使用AJAX,并在发出请求时出现500个内部错误。如果我只使用“include”,php文件可以很好地工作,但我需要在JavaScript中使其动态。我的AJAX知识有限,但从以下几点开始:$(this).load(\'/wp-content/themes/theme-name/template-parts/uploads.php\', function() { console.log(\'success\'); }); 这可以调用页面上的基本文本