如何从搜索主题目录()转到Switch_Theme()的$Style Sheet(名称)

时间:2013-04-06 作者:Chief Alchemist

我有一个主题。这取决于插件。如果你试图激活主题,但插件没有安装,那么我想switch_theme() 中的其他(随机**)主题search_theme_directories() 列表

我可以得到$template 返回的数组键的值search_theme_directories(). 但我似乎不知道如何得到$stylesheet.

此外,考虑到这种方法,检查主题是子主题还是父主题的最佳方法是什么?在不深入细节的情况下,我宁愿选择父主题作为默认主题。

也许有更好的方法?我想WP也有类似的内置功能,但我似乎也能指出这一点。简而言之,我在听你是否有想法:)

Important

我无法将此标记为:search_theme_directories(). 该标签不存在,我没有代表添加它。有人能把它加入有效标签列表吗?谢谢

注意:我首先要检查一下Twenty12和Twenty11,如果必要的话,如果他们不在,就选一个。

1 个回复
SO网友:s_ha_dum

但我似乎不知道如何获得$样式表。

容易的

$themes = search_theme_directories();

// a random theme
$themename = array_rand($themes,1); 

// that random theme\'s stylesheet
$stylesheet = content_url(\'/themes/\'.$themes[$themename][\'theme_file\']);

// The absolute path to that theme\'s stylesheet
$stylepath = WP_CONTENT_DIR.\'/themes/\'.$themes[$themename][\'theme_file\'];
获取一个非儿童的随机主题更为复杂。不过,我想就是这样了。它在测试中有效,但不认为经过严格测试。

$themes = search_theme_directories();
$rand_theme = false;
while (!$rand_theme) {
  if (empty($themes)) {
    break;
  }
  $themename = array_rand($themes,1);
  $theme_obj = wp_get_theme($themename); 
  // Parent themes don\'t have a \'Template\'
  $template = $theme_obj->get(\'Template\');
  if (empty($template)) {
    $rand_theme = $themename;
    break;
  } else {
    unset($themes[$themename]);
  }
}
switch_theme($rand_theme);
wp_get_theme 返回主题对象。我设置$rand_theme 主题名称,因为这是switch_theme 期望值。

按原样,这将在每次页面加载时切换主题。把它放到插件目录中,你就有了一个非常讨厌的插件:)

结束

相关推荐