最近在研究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;
}
WordPress日记主要承接WordPress主题定制开发、PSD转WordPress、WordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494
相关文章
wordpress获取文章特色图像路径函数wp_get_attachment_image_src()
特色图像是wordpress主要的文章缩略图功能,几乎全部w…WordPress添加自定义字段到文章函数add_post_meta()
在我们开发WordPress主题或WordPress插件的时…WordPress短代码教程:如何创建短代码,以及为什么它们非常有用
本文是一个深入的WordPress短代码教程。我们将介绍什么…WordPress主题开发中添加新评论到数据库函数:wp_new_comment()
最近我们在开发以WordPress作为后端管理的小程序的时候…WordPress获取指定文章所有自定义字段函数get_post_custom()
在WordPress主题或插件开发过程中,我们可能会需要获取…WordPress插入或更新文章函数wp_insert_post()
在做WordPress主题定制开发或插件开发的时候,经常需要…