convert to plugins+theme
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
/**
|
||||
* 便民服务的 meta key 定义与前台读取助手(双语内容、跳转链接、仅校内判定)。
|
||||
* 函数名保持与主题历史一致,主题模板与后台按原名调用它们。
|
||||
* 抽离自主题 functions.php。
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
function itstudio_get_service_url_meta_key() {
|
||||
return '_itstudio_service_url';
|
||||
}
|
||||
|
||||
function itstudio_get_service_title_cn_meta_key() {
|
||||
return '_itstudio_service_title_cn';
|
||||
}
|
||||
|
||||
function itstudio_get_service_title_en_meta_key() {
|
||||
return '_itstudio_service_title_en';
|
||||
}
|
||||
|
||||
function itstudio_get_service_excerpt_cn_meta_key() {
|
||||
return '_itstudio_service_excerpt_cn';
|
||||
}
|
||||
|
||||
function itstudio_get_service_excerpt_en_meta_key() {
|
||||
return '_itstudio_service_excerpt_en';
|
||||
}
|
||||
|
||||
function itstudio_get_service_campus_only_meta_key() {
|
||||
return '_itstudio_service_campus_only';
|
||||
}
|
||||
|
||||
function itstudio_get_service_category_name_cn_meta_key() {
|
||||
return 'itstudio_service_category_name_cn';
|
||||
}
|
||||
|
||||
function itstudio_get_service_category_name_en_meta_key() {
|
||||
return 'itstudio_service_category_name_en';
|
||||
}
|
||||
|
||||
function itstudio_get_service_category_i18n_labels($term) {
|
||||
if (!$term || is_wp_error($term)) {
|
||||
return array(
|
||||
'cn' => '未分类',
|
||||
'en' => 'Uncategorized',
|
||||
);
|
||||
}
|
||||
|
||||
$term_id = (int) $term->term_id;
|
||||
$name_cn = trim((string) get_term_meta($term_id, itstudio_get_service_category_name_cn_meta_key(), true));
|
||||
$name_en = trim((string) get_term_meta($term_id, itstudio_get_service_category_name_en_meta_key(), true));
|
||||
|
||||
if ($name_cn === '') {
|
||||
$name_cn = (string) $term->name;
|
||||
}
|
||||
if ($name_en === '') {
|
||||
$name_en = $name_cn;
|
||||
}
|
||||
|
||||
return array(
|
||||
'cn' => $name_cn,
|
||||
'en' => $name_en,
|
||||
);
|
||||
}
|
||||
|
||||
function itstudio_get_service_i18n_content($service_id, $excerpt_limit = 90) {
|
||||
$service_id = (int) $service_id;
|
||||
if ($service_id <= 0) {
|
||||
return array(
|
||||
'title_cn' => '',
|
||||
'title_en' => '',
|
||||
'excerpt_cn' => '',
|
||||
'excerpt_en' => '',
|
||||
);
|
||||
}
|
||||
|
||||
$title_cn = trim((string) get_post_meta($service_id, itstudio_get_service_title_cn_meta_key(), true));
|
||||
$title_en = trim((string) get_post_meta($service_id, itstudio_get_service_title_en_meta_key(), true));
|
||||
$excerpt_cn = trim((string) get_post_meta($service_id, itstudio_get_service_excerpt_cn_meta_key(), true));
|
||||
$excerpt_en = trim((string) get_post_meta($service_id, itstudio_get_service_excerpt_en_meta_key(), true));
|
||||
|
||||
$fallback_title = trim((string) get_the_title($service_id));
|
||||
if ($fallback_title === '') {
|
||||
$fallback_title = '未命名服务';
|
||||
}
|
||||
|
||||
$fallback_excerpt = function_exists('itstudio_get_post_excerpt_chars')
|
||||
? itstudio_get_post_excerpt_chars($service_id, $excerpt_limit)
|
||||
: wp_html_excerpt(wp_strip_all_tags((string) get_post_field('post_excerpt', $service_id)), $excerpt_limit, '...');
|
||||
$fallback_excerpt = trim((string) $fallback_excerpt);
|
||||
if ($fallback_excerpt === '') {
|
||||
$fallback_excerpt = '暂无简介';
|
||||
}
|
||||
|
||||
if ($title_cn === '') {
|
||||
$title_cn = $fallback_title;
|
||||
}
|
||||
if ($title_en === '') {
|
||||
$title_en = $title_cn;
|
||||
}
|
||||
if ($excerpt_cn === '') {
|
||||
$excerpt_cn = $fallback_excerpt;
|
||||
}
|
||||
if ($excerpt_en === '') {
|
||||
$excerpt_en = $excerpt_cn;
|
||||
}
|
||||
|
||||
return array(
|
||||
'title_cn' => $title_cn,
|
||||
'title_en' => $title_en,
|
||||
'excerpt_cn' => $excerpt_cn,
|
||||
'excerpt_en' => $excerpt_en,
|
||||
);
|
||||
}
|
||||
|
||||
function itstudio_get_service_target_url($service_id) {
|
||||
$service_id = (int) $service_id;
|
||||
if ($service_id <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$meta_key = itstudio_get_service_url_meta_key();
|
||||
$url = (string) get_post_meta($service_id, $meta_key, true);
|
||||
if ($url !== '') {
|
||||
return $url;
|
||||
}
|
||||
|
||||
return (string) get_permalink($service_id);
|
||||
}
|
||||
|
||||
function itstudio_is_service_campus_only($service_id) {
|
||||
$service_id = (int) $service_id;
|
||||
if ($service_id <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (string) get_post_meta($service_id, itstudio_get_service_campus_only_meta_key(), true) === '1';
|
||||
}
|
||||
Reference in New Issue
Block a user