forked from yuannancheng/fictional-university
-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.php
184 lines (156 loc) · 5.79 KB
/
functions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<?php
define('FIC_UNI_PATH', get_theme_file_path() . '/');
include FIC_UNI_PATH . 'includes/dotenv.php';
// banner模块
function pageBanner($args = [])
{
if (empty($args['title'])) {
$args['title'] = get_the_title();
}
if (empty($args['subtitle'])) {
$args['subtitle'] = get_field('page_banner_subtitle');
}
if (empty($args['photo'])) {
if (get_field('page_banner_background_image')) {
$args['photo'] = get_field('page_banner_background_image')['sizes']['页面顶部栏'];
} else {
$args['photo'] = get_theme_file_uri('/images/ocean.jpg');
}
}
?>
<div class="page-banner">
<div
class="page-banner__bg-image"
style="background-image: url(<?php echo $args['photo']; ?>)"
></div>
<div class="page-banner__content container container--narrow">
<h1 class="page-banner__title"><?php echo $args['title']; ?></h1>
<div class="page-banner__intro">
<p><?php echo $args['subtitle']; ?></p>
</div>
</div>
</div>
<?php
}
// 加载样式表
function university_files()
{
// 第一个参数为id,第二个参数为文件路径
wp_enqueue_style(
'custom-google-fonts',
get_theme_file_uri('/assets/css/Roboto+Condensed.css')
);
wp_enqueue_style('font-awesome', get_theme_file_uri('/assets/css/font-awesome.min.css'));
wp_enqueue_style('university_main_style', get_theme_file_uri('/build/style-index.css'));
wp_enqueue_style('university_extra_style', get_theme_file_uri('/build/index.css'));
// 第三个参数为依赖项,wordpress会先加载依赖项
// 第四个参数为当前注入的脚本的版本
// 第五个参数声明是否需要在head标签里加载,如果为false则在body标签里加载
wp_enqueue_script('university_main_js', get_theme_file_uri('/build/index.js'), array('jquery'), '1.0.0', true);
// 加载百度地图api
wp_enqueue_script(
'baiduMap',
'//api.map.baidu.com/api?v=1.0&type=webgl&callback=initBaiduMapFunction&ak=H4pCsPnqtBTQ9JHRgp1ARvwUIX6QbQtr',
null,
'1.0.0',
true
);
// 为脚本注入数据
// 参数1:脚本id
// 参数2:注入的变量名
// 参数3:注入的数据
wp_localize_script('university_main_js', 'universityData', array(
'siteUrl' => get_site_url()
));
}
// 添加加载样式表的钩子
add_action('wp_enqueue_scripts', 'university_files');
// 添加自定义的meta信息
function university_features()
{
// 标题通过wordpress生成
add_theme_support('title-tag');
// 启用文章特色图
add_theme_support('post-thumbnails');
// 图像尺寸设置:尺寸名(无特殊要求), 图像宽, 图像高, 是否裁切(默认根据中心裁切)
// 第四个参数可以传入数组,来控制裁切中心:array('left', 'top')
add_image_size('教授横向缩略图', 400, 260, true);
add_image_size('教授纵向缩略图', 480, 650, true);
add_image_size('页面顶部栏', 1500, 350, true);
}
add_action('after_setup_theme', 'university_features');
// 修改存档页面默认查询配置
function university_adjust_queries($query)
{
// 如果当前不是管理员界面,且是事件存档页面,且是主查询,则修改查询条件
if (!is_admin() and is_post_type_archive('event') and $query->is_main_query()) {
$today = date('Ymd');
$query->set('meta_key', 'event_date'); // 自定义字段名
$query->set('orderby', 'meta_value_num'); // 通过自定义字段的值来排序
$query->set('order', 'ASC'); // 升序
$query->set('meta_query', [ // 多条件查询
[
'key' => 'event_date', // 字段名
'compare' => '>=', // 比较符
'value' => $today, // 比较值
'type' => 'numeric' // 指定类型为数值
]
]);
}
// 如果当前不是管理员界面,且是学科存档页面,且是主查询,则修改查询条件
if (!is_admin() and is_post_type_archive('program') and $query->is_main_query()) {
$query->set('posts_per_page', -1); // 不限制每页大小
$query->set('orderby', 'title');
$query->set('order', 'ASC');
}
// 如果当前不是管理员界面,且是校区存档页面,且是主查询,则修改查询条件
if (!is_admin() and is_post_type_archive('campus') and $query->is_main_query()) {
$query->set('posts_per_page', -1); // 不限制返回的校区数量
}
}
// 在查询前执行函数
add_action('pre_get_posts', 'university_adjust_queries');
// 获取主题目录对应的url路径
function fic_uni_get_url($filename = '')
{
if (! defined('FIC_UNI_URL')) {
define('FIC_UNI_URL', get_theme_file_uri() . '/');
}
return FIC_UNI_URL . ltrim($filename, '/');
}
// 获取主题目录对应的path路径
function fic_uni_get_path($filename = '')
{
if (! defined('FIC_UNI_PATH')) {
define('FIC_UNI_PATH', get_theme_file_path() . '/');
}
return FIC_UNI_PATH . ltrim($filename, '/');
}
// 设置百度地图API密钥
add_filter('acf/fields/baidu_map/api', function ($api) {
$api['ak'] = getenv('BAIDU_MAP_API_KEY');
return $api;
});
// 使用ACF钩子添加百度地图的字段类型
include_once fic_uni_get_path('includes/class-acf-field-baidu-map.php');
// 导入自定义的 rest api
include fic_uni_get_path('includes/search-route.php');
// 将订阅者账户从管理界面重定向到主页
add_action('admin_init', 'redirectSubsToFrontend');
function redirectSubsToFrontend()
{
$ourCurrentUser = wp_get_current_user();
if (count($ourCurrentUser->roles) === 1 and $ourCurrentUser->roles[0] === 'subscriber') {
wp_redirect(site_url('/'));
exit;
}
}
// 将订阅者账户的管理员菜单栏隐藏
add_action('wp_loaded', 'noSubsAdminBar');
function noSubsAdminBar()
{
$ourCurrentUser = wp_get_current_user();
if (count($ourCurrentUser->roles) === 1 and $ourCurrentUser->roles[0] === 'subscriber') {
show_admin_bar(false);
}
}