微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WordPress站群(多站点)常用函数wp_get_themes()

最近在研究wordpress的站群,也就是多站点功能,想着使用wordpress的站群功能制作一个wordpress自助建站一个Saas平台,在思考与规划中我需要把站群中的所有主题以列表的形式展现的前台,从而方便用户查看和选择主题,那么这个时候就需要获取当前站群平台程序中的所有主题信息,于是找到了函数wp_get_themes();

描述:

根据参数返回WP_Theme对象的数组。

用法

<?PHP

$all_themes = wp_get_themes();

print_r($all_themes);

?>

参数:

$args

(array) (可选) 用来查询的参数

'errors'


(mixed) 为 true时返回有错误主题,为false时返回没有错误主题,为null则返回所有主题认为false。

'allowed'


(mixed)(多站点)(真),仅返回站点允许的主题。如果返回False,则仅返回网站不允许的主题。“网站”仅返回网站允许的主题。“网络”仅返回允许网络的主题。如果为Null,则返回所有主题认为空。

'blog_id'


(int) 多站点)用于计算允许哪些主题博客ID。认为0

认值: array()

文件

function wp_get_themes( $args = array() ) {

global $wp_theme_directories;

$defaults = array(

'errors' => false,

'allowed' => null,

'blog_id' => 0,

);

$args = wp_parse_args( $args,$defaults );

$theme_directories = search_theme_directories();

if ( is_array( $wp_theme_directories ) && count( $wp_theme_directories ) > 1 ) {

// Make sure the current theme wins out,in case search_theme_directories() picks the wrong

// one in the case of a conflict. (normally,last registered theme root wins.)

$current_theme = get_stylesheet();

if ( isset( $theme_directories[ $current_theme ] ) ) {

$root_of_current_theme = get_raw_theme_root( $current_theme );

if ( ! in_array( $root_of_current_theme,$wp_theme_directories ) ) {

$root_of_current_theme = WP_CONTENT_DIR . $root_of_current_theme;

}

$theme_directories[ $current_theme ]['theme_root'] = $root_of_current_theme;

}

}

if ( empty( $theme_directories ) ) {

return array();

}

if ( is_multisite() && null !== $args['allowed'] ) {

$allowed = $args['allowed'];

if ( 'network' === $allowed ) {

$theme_directories = array_intersect_key( $theme_directories,WP_Theme::get_allowed_on_network() );

} elseif ( 'site' === $allowed ) {

$theme_directories = array_intersect_key( $theme_directories,WP_Theme::get_allowed_on_site( $args['blog_id'] ) );

} elseif ( $allowed ) {

$theme_directories = array_intersect_key( $theme_directories,WP_Theme::get_allowed( $args['blog_id'] ) );

} else {

$theme_directories = array_diff_key( $theme_directories,WP_Theme::get_allowed( $args['blog_id'] ) );

}

}

$themes = array();

static $_themes = array();

foreach ( $theme_directories as $theme => $theme_root ) {

if ( isset( $_themes[ $theme_root['theme_root'] . '/' . $theme ] ) ) {

$themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/' . $theme ];

} else {

$themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/' . $theme ] = new WP_Theme( $theme,$theme_root['theme_root'] );

}

}

if ( null !== $args['errors'] ) {

foreach ( $themes as $theme => $wp_theme ) {

if ( $wp_theme->errors() != $args['errors'] ) {

unset( $themes[ $theme ] );

}

}

}

return $themes;

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐