'',
'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 = '
';
$output .= '
简码调试信息
';
$output .= '
模板输出为空,可能的原因:
';
$output .= '
';
$output .= '- 指定的分类中没有文章
';
$output .= '- 所有文章都没有特色图片
';
$output .= '- 分类ID或别名不正确
';
$output .= '
';
$output .= '
当前参数:
';
$output .= '
' . print_r($debug_info, true) . '
';
$output .= '
';
}
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 = '';
$output .= '
社会活动轮播简码调试信息
';
$output .= '
模板输出为空,可能的原因:
';
$output .= '
';
$output .= '- 指定的分类中没有文章
';
$output .= '- 所有文章都没有特色图片
';
$output .= '- 分类ID不正确
';
$output .= '
';
$output .= '
当前参数:
';
$output .= '
' . print_r($debug_info, true) . '
';
$output .= '
';
}
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');
?>