Change site template from php

时间:2014-05-04 作者:user1049961

当我得到wp_get_themes()?

 $args = array(
        \'allowed\' => true
 );

 $themes = wp_get_themes(  );

 foreach ($themes as $theme) {

          $argument_to_pass_to_switch_theme = ??????

 }

2 个回复
最合适的回答,由SO网友:MikO 整理而成

如果我理解你的问题,你应该在你的foreach:

$argument_to_pass_to_switch_theme = $theme->get_stylesheet();
看看文档:

功能wp_get_themes()...

“…返回基于参数的WP\\U主题对象数组。”

本课程WP_Theme 有一个方法get_stylesheet(), 哪一个

“…返回一个字符串,其中包含主题根目录中主题的“样式表”文件的目录名。如果这是子主题,则是子主题中的目录。”

以及功能switch_theme()...

“…接受一个参数:$主题的样式表。($样式表是文件夹slug的名称。”

SO网友:s_ha_dum

wp_get_themes() 返回aWP_Theme 对象,其中一种方法,get_stylesheet() 将返回需要传递给的值switch_theme()

您不太可能将“变量”设置为echo 后来如果您有多个主题,并且几乎总是这样(因为您应该保留一个捆绑主题以防万一),那么您将有多个变量,因此您需要创建一个数组而不是字符串。

$themes = wp_get_themes();
foreach ($themes as $theme) {
  $argument_to_pass_to_switch_theme[] =  $theme->get_stylesheet();
}

var_dump($argument_to_pass_to_switch_theme);
如果您按照模拟的方式运行代码。。。

$themes = wp_get_themes();
foreach ($themes as $theme) {
  $argument_to_pass_to_switch_theme =  $theme->get_stylesheet();
}

var_dump($argument_to_pass_to_switch_theme);
。。。您将覆盖$argument_to_pass_to_switch_theme 变量,并且只以循环中最后一个主题的样式表名称结束。

结束

相关推荐

Custom post types templates

我已经注册了一个名为“Services”的自定义帖子类型,但当我给这篇帖子提供模板“single Services.php”时,它不接受这个,而是选择了“homepage.php”模板,你能告诉我这个问题吗?它也没有使用“archive services.php”模板,而是使用blog模板(index.php)使现代化代码如下:add_action(\'init\', \'services_register\'); function services_register() { $