You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

573 lines
21 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/**
* 主题简码功能
*/
// 视频Banner区块简码
function nenghui_video_banner_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
'bg_image' => '',
'height' => '800',
'video_bg_enabled' => 'true',
'video_bg_url' => '',
'video_bg_opacity' => '1.0',
'video_bg_lazy_load' => 'false'
), $atts, 'video_banner');
// 转换字符串布尔值
$video_bg_enabled = filter_var($atts['video_bg_enabled'], FILTER_VALIDATE_BOOLEAN);
$video_bg_lazy_load = filter_var($atts['video_bg_lazy_load'], FILTER_VALIDATE_BOOLEAN);
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'video-banner-' . uniqid(),
'className' => $atts['class']
);
// 如果没有提供视频地址则从customizer获取
$video_bg_url = !empty($atts['video_bg_url']) ? $atts['video_bg_url'] : get_video_banner_background_url();
$bg_image = !empty($atts['bg_image']) ? $atts['bg_image'] : get_video_banner_bg_image();
// 设置自定义器值(模拟)
$customizer_values = array(
'video_banner_bg_image' => $bg_image,
'video_banner_height' => intval($atts['height']),
'video_banner_video_bg_enabled' => $video_bg_enabled,
'video_banner_video_bg_url' => $video_bg_url,
'video_banner_video_bg_opacity' => floatval($atts['video_bg_opacity']),
'video_banner_video_bg_lazy_load' => $video_bg_lazy_load,
'video_banner_block_id' => $block['id'],
'video_banner_block_class' => $block['className']
);
// 临时设置全局变量以供模板使用
global $video_banner_shortcode_values;
$video_banner_shortcode_values = $customizer_values;
// 确保样式和脚本已加载
if (!wp_style_is('video-banner-css', 'enqueued')) {
wp_enqueue_style('video-banner-css', get_template_directory_uri() . '/assets/css/video-banner.css', array(), '1.0.0');
}
if (!wp_script_is('video-banner-js', 'enqueued')) {
// 检查GSAP是否已加载
if (!wp_script_is('gsap', 'enqueued')) {
wp_enqueue_script('gsap', get_template_directory_uri() . '/assets/js/gsap.min.js', array(), '3.12.2', true);
}
// 检查video-banner.js文件是否存在
$video_banner_js_path = get_template_directory() . '/assets/js/video-banner.js';
if (file_exists($video_banner_js_path)) {
wp_enqueue_script('video-banner-js', get_template_directory_uri() . '/assets/js/video-banner.js', array('jquery', 'gsap'), '1.0.0', true);
} else {
error_log('Video banner JS file not found: ' . $video_banner_js_path);
}
}
ob_start();
include get_template_directory() . '/template-parts/block/block-video-banner.php';
$output = ob_get_clean();
// 清理全局变量
unset($video_banner_shortcode_values);
return $output;
}
add_shortcode('video_banner', 'nenghui_video_banner_shortcode');
// 产品服务区块简码
function nenghui_products_services_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
), $atts, 'products_services');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'products-services-' . uniqid(),
'className' => $atts['class']
);
ob_start();
include get_template_directory() . '/template-parts/block/block-products-services.php';
return ob_get_clean();
}
add_shortcode('products_services', 'nenghui_products_services_shortcode');
// 特性展示区块简码
function nenghui_features_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
), $atts, 'features');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'features-' . uniqid(),
'className' => $atts['class']
);
ob_start();
include get_template_directory() . '/template-parts/block/block-features.php';
return ob_get_clean();
}
add_shortcode('features', 'nenghui_features_shortcode');
// 解决方案区块简码
function nenghui_solution_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
), $atts, 'solution');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'solution-' . uniqid(),
'className' => $atts['class']
);
ob_start();
include get_template_directory() . '/template-parts/block/block-solution.php';
return ob_get_clean();
}
add_shortcode('solution', 'nenghui_solution_shortcode');
// 页脚图片区块简码
function nenghui_footer_img_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
), $atts, 'footer_img');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'footer-img-' . uniqid(),
'className' => $atts['class']
);
ob_start();
include get_template_directory() . '/template-parts/block/block-footer-img.php';
return ob_get_clean();
}
add_shortcode('footer_img', 'nenghui_footer_img_shortcode');
// 新闻区块简码
function nenghui_news_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'category' => '',
'posts_count' => 4,
'title' => '新闻资讯',
'subtitle' => 'NEWS',
'class' => '',
'id' => '',
), $atts, 'news');
// 准备传递给模板的参数
$args = array(
'category' => $atts['category'],
'posts_count' => intval($atts['posts_count']),
'title' => $atts['title'],
'subtitle' => $atts['subtitle']
);
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'news-' . uniqid(),
'className' => $atts['class']
);
// 开始输出缓冲
ob_start();
// 确保变量在模板中可用
extract($args);
// 包含模板文件
include get_template_directory() . '/template-parts/block/block-news.php';
// 获取输出内容
$output = ob_get_clean();
// 如果输出为空,返回调试信息
if (empty(trim($output))) {
$debug_info = array(
'分类参数' => $atts['category'],
'文章数量' => $atts['posts_count'],
'标题' => $atts['title']
);
$output = '<div class="news-debug">';
$output .= '<h4>简码调试信息</h4>';
$output .= '<p>模板输出为空,可能的原因:</p>';
$output .= '<ul>';
$output .= '<li>指定的分类中没有文章</li>';
$output .= '<li>所有文章都没有特色图片</li>';
$output .= '<li>分类ID或别名不正确</li>';
$output .= '</ul>';
$output .= '<p><strong>当前参数:</strong></p>';
$output .= '<pre>' . print_r($debug_info, true) . '</pre>';
$output .= '</div>';
}
return $output;
}
add_shortcode('news', 'nenghui_news_shortcode');
// 社会责任轮播简码
function nenghui_social_activities_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'category_id' => 8,
'posts_count' => 6,
'title' => '社会责任',
'slides_per_view' => 3,
'class' => '',
'id' => '',
), $atts, 'social_activities');
// 准备传递给模板的参数
$args = array(
'category_id' => intval($atts['category_id']),
'posts_count' => intval($atts['posts_count']),
'title' => $atts['title'],
'slides_per_view' => intval($atts['slides_per_view'])
);
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'social-activities-' . uniqid(),
'className' => $atts['class']
);
// 开始输出缓冲
ob_start();
// 确保变量在模板中可用
extract($args);
// 包含模板文件
include get_template_directory() . '/template-parts/block/black-social-activities.php';
// 获取输出内容
$output = ob_get_clean();
// 动态加载社会活动轮播相关资源 - 使用 Swiper
$theme_url = get_template_directory_uri();
$theme_path = get_template_directory();
// 加载 Swiper CSS
if (!wp_style_is('swiper-bundle-css', 'enqueued')) {
$swiper_css_file = '/assets/css/swiper-bundle.min.css';
if (file_exists($theme_path . $swiper_css_file)) {
wp_enqueue_style('swiper-bundle-css', $theme_url . $swiper_css_file, array(), '8.4.5');
} else {
error_log('Missing Swiper CSS file: ' . $theme_path . $swiper_css_file);
}
}
// 加载社会活动样式
if (!wp_style_is('social-activities-css', 'enqueued')) {
$css_file = '/assets/css/social-activities.css';
if (file_exists($theme_path . $css_file)) {
wp_enqueue_style('social-activities-css', $theme_url . $css_file, array('swiper-bundle-css'), '1.0.0');
} else {
error_log('Missing CSS file: ' . $theme_path . $css_file);
}
}
// 加载 Swiper JavaScript
if (!wp_script_is('swiper-bundle-js', 'enqueued')) {
$swiper_js_file = '/assets/js/swiper-bundle.min.js';
if (file_exists($theme_path . $swiper_js_file)) {
wp_enqueue_script('swiper-bundle-js', $theme_url . $swiper_js_file, array(), '8.4.5', true);
} else {
error_log('Missing Swiper JS file: ' . $theme_path . $swiper_js_file);
}
}
// 加载社会活动 Swiper 初始化脚本
if (!wp_script_is('social-activities-swiper-js', 'enqueued')) {
$js_file = '/assets/js/social-activities-swiper.js';
if (file_exists($theme_path . $js_file)) {
wp_enqueue_script('social-activities-swiper-js', $theme_url . $js_file, array('jquery', 'swiper-bundle-js'), '1.0.0', true);
} else {
error_log('Missing JS file: ' . $theme_path . $js_file);
}
}
// 如果输出为空,返回调试信息
if (empty(trim($output))) {
$debug_info = array(
'分类ID' => $atts['category_id'],
'文章数量' => $atts['posts_count'],
'标题' => $atts['title'],
'每页显示' => $atts['slides_per_view']
);
$output = '<div class="social-activities-debug">';
$output .= '<h4>社会活动轮播简码调试信息</h4>';
$output .= '<p>模板输出为空,可能的原因:</p>';
$output .= '<ul>';
$output .= '<li>指定的分类中没有文章</li>';
$output .= '<li>所有文章都没有特色图片</li>';
$output .= '<li>分类ID不正确</li>';
$output .= '</ul>';
$output .= '<p><strong>当前参数:</strong></p>';
$output .= '<pre>' . print_r($debug_info, true) . '</pre>';
$output .= '</div>';
}
return $output;
}
add_shortcode('social_activities', 'nenghui_social_activities_shortcode');
// 投资者关系区块简码
function nenghui_investor_relations_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'title' => '投资者关系',
'class' => '',
'id' => '',
), $atts, 'investor_relations');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'investor-relations-' . uniqid(),
'className' => $atts['class']
);
// 准备传递给模板的参数
$args = array(
'title' => $atts['title']
);
// 开始输出缓冲
ob_start();
// 确保变量在模板中可用
extract($args);
// 包含模板文件
include get_template_directory() . '/template-parts/block/black-investor-relations.php';
// 获取输出内容
$output = ob_get_clean();
return $output;
}
add_shortcode('investor_relations', 'nenghui_investor_relations_shortcode');
// 导航菜单简码
function nenghui_navigation_menu_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'menu_id' => 'primary',
'menu_class' => '',
'theme' => 'default',
'show_border' => 'true',
'align' => 'left',
'class' => '',
'id' => '',
), $atts, 'navigation_menu');
// 转换字符串布尔值
$show_border = filter_var($atts['show_border'], FILTER_VALIDATE_BOOLEAN);
// 准备传递给模板的参数
$args = array(
'menu_id' => $atts['menu_id'],
'menu_class' => $atts['menu_class'],
'theme' => $atts['theme'],
'show_border' => $show_border,
'align' => $atts['align']
);
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'navigation-menu-' . uniqid(),
'className' => $atts['class']
);
// 开始输出缓冲
ob_start();
// 包含模板文件
include get_template_directory() . '/template-parts/block/block-navigation-menu.php';
// 动态加载navigation-menu相关资源
if (!wp_style_is('navigation-menu-css', 'enqueued')) {
$theme_url = get_template_directory_uri();
$theme_path = get_template_directory();
$css_file = '/assets/css/navigation-menu.css';
if (file_exists($theme_path . $css_file)) {
wp_enqueue_style('navigation-menu-css', $theme_url . $css_file, array(), '1.0.0');
} else {
// 如果CSS文件不存在记录日志但不阻止功能
error_log('Navigation menu CSS file not found: ' . $theme_path . $css_file);
}
}
if (!wp_script_is('navigation-menu-js', 'enqueued')) {
$theme_url = get_template_directory_uri();
$theme_path = get_template_directory();
$js_file = '/assets/js/navigation-menu.js';
if (file_exists($theme_path . $js_file)) {
wp_enqueue_script('navigation-menu-js', $theme_url . $js_file, array('jquery'), '1.0.0', true);
} else {
// 如果JS文件不存在记录日志但不阻止功能
error_log('Navigation menu JS file not found: ' . $theme_path . $js_file);
}
}
// 获取输出内容
$output = ob_get_clean();
return $output;
}
add_shortcode('navigation_menu', 'nenghui_navigation_menu_shortcode');
// 业务流程区块简码
function nenghui_business_process_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
'title' => '',
'subtitle' => '',
'tab_01_title' => '',
'tab_01_description' => '',
'tab_01_image' => '',
'tab_02_title' => '',
'tab_02_description' => '',
'tab_02_image' => '',
'tab_03_title' => '',
'tab_03_description' => '',
'tab_03_image' => '',
'tab_04_title' => '',
'tab_04_description' => '',
'tab_04_image' => '',
), $atts, 'business_process');
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'business-process-' . uniqid(),
'className' => $atts['class']
);
// 设置自定义器值(模拟)
$customizer_values = array(
'business_process_show' => true,
'business_process_title' => !empty($atts['title']) ? $atts['title'] : get_theme_mod('business_process_title', '设计业务流程'),
'business_process_subtitle' => !empty($atts['subtitle']) ? $atts['subtitle'] : get_theme_mod('business_process_subtitle', 'DESIGN BUSINESS PROCESS'),
'business_process_tab_01_title' => !empty($atts['tab_01_title']) ? $atts['tab_01_title'] : get_theme_mod('business_process_tab1_title', '可行性研究'),
'business_process_tab_01_description' => !empty($atts['tab_01_description']) ? $atts['tab_01_description'] : get_theme_mod('business_process_tab1_description', '前期规划及可行性分析'),
'business_process_tab_01_image' => !empty($atts['tab_01_image']) ? $atts['tab_01_image'] : get_theme_mod('business_process_tab1_image', get_template_directory_uri() . '/assets/images/FWas.jpg'),
'business_process_tab_02_title' => !empty($atts['tab_02_title']) ? $atts['tab_02_title'] : get_theme_mod('business_process_tab2_title', '初步设计'),
'business_process_tab_02_description' => !empty($atts['tab_02_description']) ? $atts['tab_02_description'] : get_theme_mod('business_process_tab2_description', '方案设计及技术论证'),
'business_process_tab_02_image' => !empty($atts['tab_02_image']) ? $atts['tab_02_image'] : get_theme_mod('business_process_tab2_image', get_template_directory_uri() . '/assets/images/FWas.jpg'),
'business_process_tab_03_title' => !empty($atts['tab_03_title']) ? $atts['tab_03_title'] : get_theme_mod('business_process_tab3_title', '施工图设计'),
'business_process_tab_03_description' => !empty($atts['tab_03_description']) ? $atts['tab_03_description'] : get_theme_mod('business_process_tab3_description', '详细设计及施工图纸'),
'business_process_tab_03_image' => !empty($atts['tab_03_image']) ? $atts['tab_03_image'] : get_theme_mod('business_process_tab3_image', get_template_directory_uri() . '/assets/images/FWas.jpg'),
'business_process_tab_04_title' => !empty($atts['tab_04_title']) ? $atts['tab_04_title'] : get_theme_mod('business_process_tab4_title', '竣工图设计'),
'business_process_tab_04_description' => !empty($atts['tab_04_description']) ? $atts['tab_04_description'] : get_theme_mod('business_process_tab4_description', '竣工验收及图纸归档'),
'business_process_tab_04_image' => !empty($atts['tab_04_image']) ? $atts['tab_04_image'] : get_theme_mod('business_process_tab4_image', get_template_directory_uri() . '/assets/images/FWas.jpg'),
);
// 临时设置全局变量以供模板使用
global $business_process_shortcode_values;
$business_process_shortcode_values = $customizer_values;
// 确保样式和脚本已加载
if (!wp_style_is('business-process-css', 'enqueued')) {
wp_enqueue_style('business-process-css', get_template_directory_uri() . '/assets/css/business-process.css', array(), '1.0.0');
}
if (!wp_script_is('business-process-js', 'enqueued')) {
wp_enqueue_script('business-process-js', get_template_directory_uri() . '/assets/js/business-process.js', array('jquery'), '1.0.0', true);
}
ob_start();
include get_template_directory() . '/template-parts/block/block-process.php';
$output = ob_get_clean();
// 清理全局变量
unset($business_process_shortcode_values);
return $output;
}
add_shortcode('business_process', 'nenghui_business_process_shortcode');
// 户用轮播图区块简码
function nenghui_household_carousel_shortcode($atts) {
// 设置默认属性
$atts = shortcode_atts(array(
'class' => '',
'id' => '',
'title' => '户用解决方案',
'subtitle' => 'HOUSEHOLD SOLUTIONS',
'show' => 'true',
'autoplay' => 'true',
'autoplay_delay' => '5000'
), $atts, 'household_carousel');
// 转换字符串布尔值
$show_household = filter_var($atts['show'], FILTER_VALIDATE_BOOLEAN);
$autoplay = filter_var($atts['autoplay'], FILTER_VALIDATE_BOOLEAN);
// 如果不显示该区块,直接返回
if (!$show_household) {
return '';
}
// 模拟区块数据
$block = array(
'id' => !empty($atts['id']) ? $atts['id'] : 'household-carousel-' . uniqid(),
'className' => $atts['class']
);
// 设置自定义器值(模拟)
$customizer_values = array(
'household_title' => $atts['title'],
'household_subtitle' => $atts['subtitle'],
'household_show' => $show_household,
'household_autoplay' => $autoplay,
'household_autoplay_delay' => intval($atts['autoplay_delay']),
'household_block_id' => $block['id'],
'household_block_class' => $block['className']
);
// 临时设置全局变量以供模板使用
global $household_shortcode_values;
$household_shortcode_values = $customizer_values;
// 确保样式和脚本已加载
if (!wp_style_is('household-carousel-css', 'enqueued')) {
wp_enqueue_style('household-carousel-css', get_template_directory_uri() . '/assets/css/household-carousel.css', array(), '1.0.0');
}
if (!wp_script_is('household-carousel-js', 'enqueued')) {
wp_enqueue_script('household-carousel-js', get_template_directory_uri() . '/assets/js/household-carousel.js', array(), '1.0.0', true);
}
ob_start();
include get_template_directory() . '/template-parts/block/block-household.php';
$output = ob_get_clean();
// 清理全局变量
unset($household_shortcode_values);
return $output;
}
add_shortcode('household_carousel', 'nenghui_household_carousel_shortcode');
?>