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.

1696 lines
54 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
/**
* 短代码和自定义器JavaScript功能
*/
// 防止直接访问
if (!defined('ABSPATH')) {
exit;
}
// 注册nenghui_banner短代码
function nenghui_banner_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-banner-shortcode',
'class' => '',
'autoplay' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $banner_shortcode_atts;
$banner_shortcode_atts = $atts;
// 包含banner模板
include get_template_directory() . '/template-parts/blocks/block-banner.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_banner', 'nenghui_banner_shortcode');
// 注册nenghui_futures短代码
function nenghui_futures_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-futures-shortcode',
'class' => '',
'title' => '',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $futures_shortcode_atts;
$futures_shortcode_atts = $atts;
// 包含futures模板
include get_template_directory() . '/template-parts/blocks/block-futures.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_futures', 'nenghui_futures_shortcode');
// 注册nenghui_news短代码
function nenghui_news_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-news-shortcode',
'class' => '',
'title' => '',
'category_id' => '',
'posts_count' => '',
'order_by' => '',
'order' => ''
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $news_shortcode_atts;
$news_shortcode_atts = $atts;
// 包含news模板
include get_template_directory() . '/template-parts/blocks/block-home-news.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_news', 'nenghui_news_shortcode');
function nenghui_epc_shortcode($atts) {
if (!is_array($atts)) {
$atts = array();
}
$atts = shortcode_atts(array(
'id' => 'nenghui-epc',
'class' => '',
'title' => 'EPC Solutions',
'subtitle' => 'Beyond Hardware: Total EPC Solutions from NengHui Design Institute',
'bg_image' => get_template_directory_uri() . '/assets/images/epc-bg.jpg'
), $atts);
wp_enqueue_style('epc-style', get_template_directory_uri() . '/assets/css/epc.css', array(), '1.0.0');
ob_start();
global $epc_shortcode_atts;
$epc_shortcode_atts = $atts;
include get_template_directory() . '/template-parts/blocks/block-epc.php';
return ob_get_clean();
}
add_shortcode('nenghui_epc', 'nenghui_epc_shortcode');
// feature-module 模块
function nenghui_epc_banner_shortcode($atts) {
if (!is_array($atts)) {
$atts = array();
}
$atts = shortcode_atts(array(
'id' => 'nenghui-epc-banner',
'class' => ''
), $atts);
wp_enqueue_style('feature-module', get_template_directory_uri() . '/assets/css/feature-module.css', array(), '1.0.0');
ob_start();
global $epc_banner_shortcode_atts;
$epc_banner_shortcode_atts = $atts;
include get_template_directory() . '/template-parts/blocks/block-epc-banner.php';
return ob_get_clean();
}
add_shortcode('nenghui_epc_banner', 'nenghui_epc_banner_shortcode');
// 注册black_maps短代码
function nenghui_black_maps_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-black-maps-shortcode',
'class' => '',
'height' => '100vh'
), $atts);
// 加载必要的脚本和样式
// 确保jQuery先加载
wp_enqueue_script('jquery');
// 加载ECharts库 - 在header中加载以避免时序问题
wp_enqueue_script('echarts', get_template_directory_uri() . '/assets/js/echarts.min.js', array('jquery'), '5.4.0', false);
wp_enqueue_script('echarts-world', get_template_directory_uri() . '/assets/js/world.js', array('echarts'), '1.0.0', false);
// 加载地图样式
wp_enqueue_style('black-maps-style', get_template_directory_uri() . '/assets/css/black-maps.css', array(), '1.0.0');
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $black_maps_shortcode_atts;
$black_maps_shortcode_atts = $atts;
// 包含地图模板
include get_template_directory() . '/template-parts/blocks/black-maps.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('black_maps', 'nenghui_black_maps_shortcode');
// 注册nenghui_tabs短代码
function nenghui_tabs_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-tabs-shortcode',
'class' => '',
'tabs_count' => '', // 可以覆盖自定义器设置的选项卡数量
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $tabs_shortcode_atts;
$tabs_shortcode_atts = $atts;
// 包含tabs模板
include get_template_directory() . '/template-parts/blocks/block-tabs.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_tabs', 'nenghui_tabs_shortcode');
// 注册nenghui_flowchart_tabs短代码
function nenghui_flowchart_tabs_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-flowchart-tabs-shortcode',
'class' => ''
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $flowchart_tabs_shortcode_atts;
$flowchart_tabs_shortcode_atts = $atts;
// 包含flowchart-tabs模板
include get_template_directory() . '/template-parts/blocks/block-flowchart-tab.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_flowchart_tabs', 'nenghui_flowchart_tabs_shortcode');
// 注册nenghui_banner_title短代码 (重构版本)
function nenghui_banner_title_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => '', // 如果为空将自动生成唯一ID
'class' => '',
'title' => '',
'description' => '',
'bg_image' => '',
'height' => '',
'overlay_opacity' => '',
'show_animation' => 'true'
), $atts);
// 验证和清理参数
if (!empty($atts['height'])) {
// 验证高度格式
if (!preg_match('/^\d+(\.\d+)?(px|vh|%)$/', $atts['height'])) {
$atts['height'] = '60vh'; // 默认值
}
}
if (!empty($atts['overlay_opacity'])) {
// 验证透明度值
$opacity = floatval($atts['overlay_opacity']);
if ($opacity < 0 || $opacity > 1) {
$atts['overlay_opacity'] = '0.4'; // 默认值
}
}
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $banner_title_shortcode_atts;
$banner_title_shortcode_atts = $atts;
// 包含banner-title模板
include get_template_directory() . '/template-parts/blocks/block-banner-title.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_banner_title', 'nenghui_banner_title_shortcode');
// 注册black_maps短代码
function black_maps_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'echartsMap-' . uniqid(),
'class' => '',
'height' => '100vh',
'show_loading' => 'true'
), $atts);
// 引入必要的资源文件
wp_enqueue_script('echarts', get_template_directory_uri() . '/assets/js/echarts.min.js', array('jquery'), '5.4.0', true);
wp_enqueue_script('echarts-world', get_template_directory_uri() . '/assets/js/world.js', array('echarts'), '1.0.0', true);
wp_enqueue_style('black-maps', get_template_directory_uri() . '/assets/css/black-maps.css', array(), '1.0.0');
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $black_maps_shortcode_atts;
$black_maps_shortcode_atts = $atts;
// 包含地图模板
include get_template_directory() . '/template-parts/blocks/black-maps.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('black_maps', 'black_maps_shortcode');
/**
* Banner Title 短代码使用示例:
*
* 基本用法:
* [nenghui_banner_title title="关于我们" description="我们致力于提供最优质的服务"]
*
* 完整参数:
* [nenghui_banner_title
* id="custom-banner"
* class="custom-class"
* title="关于我们"
* description="我们致力于提供最优质的服务"
* bg_image="https://example.com/image.jpg"
* height="70vh"
* overlay_opacity="0.6"
* show_animation="true"]
*/
// Banner轮播现在使用原生JavaScript实现无需额外加载库
// 注册nenghui_about_nav短代码
function nenghui_about_nav_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-about-nav-shortcode',
'class' => '',
'menu_id' => ''
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $about_nav_shortcode_atts;
$about_nav_shortcode_atts = $atts;
// 包含about-nav模板
include get_template_directory() . '/template-parts/blocks/block-about-nav.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_about_nav', 'nenghui_about_nav_shortcode');
/**
* About 导航短代码使用示例:
*
* 基本用法:
* [nenghui_about_nav]
*
* 自定义参数:
* [nenghui_about_nav
* id="custom-about-nav"
* class="custom-class"
* menu_id="123"]
*/
// 注册nenghui_about_company短代码
function nenghui_about_company_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-about-company-shortcode',
'class' => '',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $about_company_shortcode_atts;
$about_company_shortcode_atts = $atts;
// 包含about-company模板
include get_template_directory() . '/template-parts/blocks/block-about-company.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_about_company', 'nenghui_about_company_shortcode');
/**
* About Company 短代码使用示例:
*
* 基本用法:
* [nenghui_about_company]
*
* 自定义参数:
* [nenghui_about_company
* id="custom-about-company"
* class="custom-class"
* show_animation="true"]
*/
// 注册nenghui_development_history短代码
function nenghui_development_history_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-development-history-shortcode',
'class' => '',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $development_history_shortcode_atts;
$development_history_shortcode_atts = $atts;
// 包含development-history模板
include get_template_directory() . '/template-parts/blocks/block-development-history.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_development_history', 'nenghui_development_history_shortcode');
/**
* Development History 短代码使用示例:
*
* 基本用法:
* [nenghui_development_history]
*
* 自定义参数:
* [nenghui_development_history
* id="custom-development-history"
* class="custom-class"
* show_animation="true"]
*/
// 注册nenghui_certification_gallery短代码
function nenghui_certification_gallery_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-certification-gallery-shortcode',
'class' => '',
'images' => '', // 图片ID列表逗号分隔
'columns' => '', // 每行显示列数
'lightbox' => '', // 是否启用灯箱效果
'animation' => '' // 是否启用动画效果
), $atts);
// 验证和清理参数
if (!empty($atts['columns'])) {
$columns = intval($atts['columns']);
if ($columns < 1 || $columns > 6) {
$atts['columns'] = '5'; // 默认值
}
}
if (!empty($atts['lightbox'])) {
$atts['lightbox'] = filter_var($atts['lightbox'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($atts['lightbox'] === null) {
$atts['lightbox'] = 'true'; // 默认值
} else {
$atts['lightbox'] = $atts['lightbox'] ? 'true' : 'false';
}
}
if (!empty($atts['animation'])) {
$atts['animation'] = filter_var($atts['animation'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($atts['animation'] === null) {
$atts['animation'] = 'true'; // 默认值
} else {
$atts['animation'] = $atts['animation'] ? 'true' : 'false';
}
}
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $certification_shortcode_atts;
$certification_shortcode_atts = $atts;
// 包含certification模板
include get_template_directory() . '/template-parts/blocks/block-certification.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_certification_gallery', 'nenghui_certification_gallery_shortcode');
/**
* Certification Gallery 短代码使用示例:
*
* 基本用法:
* [nenghui_certification_gallery]
*
* 常用参数:
* [nenghui_certification_gallery columns="4" lightbox="true"]
*/
// 注册nenghui_technical_service短代码
function nenghui_technical_service_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-technical-service-shortcode',
'class' => '',
'title' => 'Reliable Technical Service',
'subtitle' => 'Enhance Experience for Customers',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $technical_service_shortcode_atts;
$technical_service_shortcode_atts = $atts;
// 包含technical-service模板
include get_template_directory() . '/template-parts/blocks/block-technical-service.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_technical_service', 'nenghui_technical_service_shortcode');
/**
* Technical Service 短代码使用示例:
*
* 基本用法:
* [nenghui_technical_service]
*
* 自定义参数:
* [nenghui_technical_service
* id="custom-technical-service"
* class="custom-class"
* title="可靠的技术服务"
* subtitle="提升客户体验"
* show_animation="true"]
*/
// 注册nenghui_video短代码
function nenghui_video_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 只处理实际传递的参数,空值将在模板中使用自定义器默认值
$processed_atts = array();
// 处理传递的参数
if (isset($atts['id']) && !empty($atts['id'])) {
$processed_atts['id'] = $atts['id'];
}
if (isset($atts['class']) && !empty($atts['class'])) {
$processed_atts['class'] = $atts['class'];
}
if (isset($atts['video_url']) && !empty($atts['video_url'])) {
$processed_atts['video_url'] = $atts['video_url'];
}
if (isset($atts['cover_image']) && !empty($atts['cover_image'])) {
$processed_atts['cover_image'] = $atts['cover_image'];
}
if (isset($atts['title']) && !empty($atts['title'])) {
$processed_atts['title'] = $atts['title'];
}
if (isset($atts['description']) && !empty($atts['description'])) {
$processed_atts['description'] = $atts['description'];
}
if (isset($atts['play_button_text']) && !empty($atts['play_button_text'])) {
$processed_atts['play_button_text'] = $atts['play_button_text'];
}
if (isset($atts['height']) && !empty($atts['height'])) {
$processed_atts['height'] = $atts['height'];
}
if (isset($atts['show_overlay']) && $atts['show_overlay'] !== '') {
$processed_atts['show_overlay'] = $atts['show_overlay'];
}
if (isset($atts['overlay_opacity']) && $atts['overlay_opacity'] !== '') {
$processed_atts['overlay_opacity'] = $atts['overlay_opacity'];
}
if (isset($atts['autoplay']) && $atts['autoplay'] !== '') {
$processed_atts['autoplay'] = $atts['autoplay'];
}
if (isset($atts['muted']) && $atts['muted'] !== '') {
$processed_atts['muted'] = $atts['muted'];
}
if (isset($atts['controls']) && $atts['controls'] !== '') {
$processed_atts['controls'] = $atts['controls'];
}
$atts = $processed_atts;
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $video_shortcode_atts;
$video_shortcode_atts = $atts;
// 包含video模板
include get_template_directory() . '/template-parts/blocks/block-video.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_video', 'nenghui_video_shortcode');
/**
* Video 短代码使用示例:
*
* 基本用法:
* [nenghui_video video_url="https://example.com/video.mp4"]
*
* 完整参数:
* [nenghui_video
* id="custom-video"
* class="custom-class"
* video_url="https://example.com/video.mp4"
* cover_image="https://example.com/cover.jpg"
* title="我们的企业视频"
* description="了解我们的产品和服务"
* play_button_text="立即播放"
* show_overlay="true"
* overlay_opacity="0.5"
* height="80vh"
* autoplay="false"
* muted="true"
* controls="true"]
*
* 常用参数:
* [nenghui_video video_url="video.mp4" title="企业介绍" height="60vh"]
*/
// 注册nenghui_contact_form短代码
function nenghui_contact_form_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-contact-form-shortcode',
'class' => '',
'form_id' => '1',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $contact_form_shortcode_atts;
$contact_form_shortcode_atts = $atts;
// 包含contact-form模板
include get_template_directory() . '/template-parts/blocks/block-contact-form.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_contact_form', 'nenghui_contact_form_shortcode');
/**
* Contact Form 短代码使用示例:
*
* 基本用法:
* [nenghui_contact_form]
*
* 自定义参数:
* [nenghui_contact_form
* id="custom-contact-form"
* class="custom-class"
* form_id="2"
* show_animation="true"]
*/
// 注册black_about_company_banner短代码
function black_about_company_banner_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'black-about-company-banner-shortcode',
'class' => '',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $black_about_company_banner_shortcode_atts;
$black_about_company_banner_shortcode_atts = $atts;
// 包含black-about-company-banner模板
include get_template_directory() . '/template-parts/blocks/black-about-company-banner.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('black_about_company_banner', 'black_about_company_banner_shortcode');
/**
* Black About Company Banner 短代码使用示例:
*
* 基本用法:
* [black_about_company_banner]
*
* 自定义参数:
* [black_about_company_banner
* id="custom-black-about-company-banner"
* class="custom-class"
* show_animation="true"]
*/
// 在小工具中也支持短代码
add_filter('widget_text', 'do_shortcode');
// 注册nenghui_download_center短代码
function nenghui_download_center_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-download-center-shortcode',
'class' => '',
'title' => 'Download Center',
'show_all_tab' => 'true',
'posts_per_category' => '-1',
'enable_pagination' => 'false',
'posts_per_page' => '6',
'order_by' => 'date',
'order' => 'DESC'
), $atts);
// 验证和清理参数
if (!empty($atts['posts_per_category'])) {
$posts_count = intval($atts['posts_per_category']);
if ($posts_count < -1) {
$atts['posts_per_category'] = '-1'; // 默认显示所有
}
}
if (!empty($atts['show_all_tab'])) {
$atts['show_all_tab'] = filter_var($atts['show_all_tab'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($atts['show_all_tab'] === null) {
$atts['show_all_tab'] = 'true'; // 默认值
} else {
$atts['show_all_tab'] = $atts['show_all_tab'] ? 'true' : 'false';
}
}
if (!empty($atts['enable_pagination'])) {
$atts['enable_pagination'] = filter_var($atts['enable_pagination'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($atts['enable_pagination'] === null) {
$atts['enable_pagination'] = 'false'; // 默认值
} else {
$atts['enable_pagination'] = $atts['enable_pagination'] ? 'true' : 'false';
}
}
if (!empty($atts['posts_per_page'])) {
$posts_per_page = intval($atts['posts_per_page']);
if ($posts_per_page < 1) {
$atts['posts_per_page'] = '6'; // 默认值
}
}
if (!empty($atts['order_by'])) {
$valid_orderby = array('date', 'modified', 'title', 'menu_order', 'rand');
if (!in_array($atts['order_by'], $valid_orderby)) {
$atts['order_by'] = 'date'; // 默认值
}
}
if (!empty($atts['order'])) {
$atts['order'] = strtoupper($atts['order']);
if (!in_array($atts['order'], array('ASC', 'DESC'))) {
$atts['order'] = 'DESC'; // 默认值
}
}
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $download_center_shortcode_atts;
$download_center_shortcode_atts = $atts;
// 包含download-center模板
include get_template_directory() . '/template-parts/blocks/block-download-center.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_download_center', 'nenghui_download_center_shortcode');
/**
* Download Center 短代码使用示例:
*
* 基本用法:
* [nenghui_download_center]
*
* 自定义标题:
* [nenghui_download_center title="资源下载"]
*
* 不显示"全部"选项卡:
* [nenghui_download_center show_all_tab="false"]
*
* 限制每个分类显示的文章数量:
* [nenghui_download_center posts_per_category="6"]
*
* 启用分页功能:
* [nenghui_download_center enable_pagination="true" posts_per_page="6"]
*
* 完整参数:
* [nenghui_download_center
* id="custom-download-center"
* class="custom-class"
* title="资源下载中心"
* show_all_tab="true"
* posts_per_category="8"
* enable_pagination="true"
* posts_per_page="6"
* order_by="title"
* order="ASC"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-download-center-shortcode'
* - class: 额外CSS类
* - title: 区块标题,默认为 'Download Center'
* - show_all_tab: 是否显示"全部"选项卡true/false默认为 true
* - posts_per_category: 每个分类显示的文章数量,-1表示显示所有默认为 -1仅在未启用分页时使用
* - enable_pagination: 是否启用分页功能true/false默认为 false
* - posts_per_page: 每页显示的文章数量,默认为 6仅在启用分页时使用
* - order_by: 排序字段date/modified/title/menu_order/rand默认为 date
* - order: 排序方向ASC/DESC默认为 DESC
*
* 注意事项:
* - 下载文件通过自定义字段 '_download_url' 设置
* - 如果没有设置下载链接,将使用特色图像作为下载文件
* - 如果没有特色图像将显示默认的PDF图像
* - 分类通过 'download_category' 分类法管理
* - 支持文件大小和文件类型的显示
* - 自动创建 'Company profile' 和 'Product series' 两个默认分类
* - 启用分页后,每个分类都有独立的分页导航
* - 分页功能支持Tab选项卡切换每个选项卡显示对应的分页组件
* - 分页参数优先级enable_pagination=true时使用posts_per_page否则使用posts_per_category
*
* 后台使用说明:
* 1. 在WordPress后台可以看到"下载中心"菜单
* 2. 点击"添加新下载"创建下载项目
* 3. 设置标题、内容摘要和特色图像
* 4. 在"下载文件信息"元框中设置下载链接、文件大小和文件类型
* 5. 选择对应的下载分类Company profile 或 Product series
* 6. 发布后即可在前台显示
*/
// 注册nenghui_news_grid短代码 - 3行4列卡片布局
function nenghui_news_grid_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-news-grid-shortcode',
'class' => '',
'title' => '',
'category_id' => '',
'posts_count' => '12',
'posts_per_page' => '',
'enable_pagination' => '',
'order_by' => 'date',
'order' => 'DESC'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $news_shortcode_atts;
$news_shortcode_atts = $atts;
// 包含3行4列卡片布局模板
include get_template_directory() . '/template-parts/blocks/block-news.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_news_grid', 'nenghui_news_grid_shortcode');
/**
* News Grid 短代码使用示例:
*
* 基本用法:
* [nenghui_news_grid]
*
* 在分类页面使用(自动显示当前分类文章):
* [nenghui_news_grid]
*
* 指定分类使用:
* [nenghui_news_grid category_id="5"]
*
* 在分类页面显示所有文章(覆盖当前分类):
* [nenghui_news_grid category_id=""]
*
* 启用分页功能:
* [nenghui_news_grid enable_pagination="true" posts_per_page="6"]
*
* 完整参数:
* [nenghui_news_grid
* id="custom-news-grid"
* class="custom-class"
* title="最新资讯"
* category_id="5"
* posts_count="12"
* posts_per_page="6"
* enable_pagination="true"
* order_by="date"
* order="DESC"]
*
* 参数说明:
* - id: 容器ID
* - class: 额外CSS类
* - title: 区块标题
* - category_id: 分类ID支持以下情况
* * 不设置:在分类页面自动使用当前分类,其他页面显示所有文章
* * 设置数字:显示指定分类的文章
* * 设置多个数字(逗号分隔):显示多个分类的文章(如 "5,6,7"
* * 设置空值:强制显示所有文章(即使在分类页面)
* - posts_count: 文章数量默认为123行4列仅在未启用分页时使用
* - posts_per_page: 每页显示文章数量,仅在启用分页时使用
* - enable_pagination: 是否启用分页true/false
* - order_by: 排序字段date/modified/title/rand
* - order: 排序方向ASC/DESC
*
* 分类ID优先级短代码参数 > 当前分类页面 > 自定义器设置
*
* 分页功能说明:
* - 启用分页后,将显示数字分页组件
* - 分页时网格布局会自动调整为响应式布局
* - 可在自定义器中设置默认的分页参数
*/
// 注册nenghui_contact_map短代码
function nenghui_contact_map_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 只处理实际传递的参数,空值将在模板中使用自定义器默认值
$processed_atts = array();
// 处理传递的参数
if (isset($atts['id']) && !empty($atts['id'])) {
$processed_atts['id'] = $atts['id'];
}
if (isset($atts['class']) && !empty($atts['class'])) {
$processed_atts['class'] = $atts['class'];
}
if (isset($atts['title']) && !empty($atts['title'])) {
$processed_atts['title'] = $atts['title'];
}
if (isset($atts['office_address']) && !empty($atts['office_address'])) {
$processed_atts['office_address'] = $atts['office_address'];
}
if (isset($atts['phone']) && !empty($atts['phone'])) {
$processed_atts['phone'] = $atts['phone'];
}
if (isset($atts['email']) && !empty($atts['email'])) {
$processed_atts['email'] = $atts['email'];
}
if (isset($atts['map_embed_code']) && !empty($atts['map_embed_code'])) {
$processed_atts['map_embed_code'] = $atts['map_embed_code'];
}
if (isset($atts['map_height']) && !empty($atts['map_height'])) {
// 验证地图高度格式
if (preg_match('/^\d+(\.\d+)?(px|vh|%)$/', $atts['map_height'])) {
$processed_atts['map_height'] = $atts['map_height'];
}
}
$atts = $processed_atts;
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $contact_map_shortcode_atts;
$contact_map_shortcode_atts = $atts;
// 包含contact-map模板
include get_template_directory() . '/template-parts/blocks/block-contact-map.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_contact_map', 'nenghui_contact_map_shortcode');
/**
* Contact Map 短代码使用示例:
*
* 基本用法:
* [nenghui_contact_map]
*
* 自定义标题:
* [nenghui_contact_map title="联系我们"]
*
* 自定义联系信息:
* [nenghui_contact_map
* title="联系我们"
* office_address="上海市长宁区同协路288号"
* phone="+86-21-50896255"
* email="info@nhet.energy"]
*
* 完整参数:
* [nenghui_contact_map
* id="custom-contact-map"
* class="custom-class"
* title="联系我们"
* office_address="上海市长宁区同协路288号"
* phone="+86-21-50896255"
* email="info@nhet.energy"
* map_embed_code="<iframe src='...'></iframe>"
* map_height="500px"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-contact-map'
* - class: 额外CSS类
* - title: 区块标题,默认使用自定义器设置
* - office_address: 办公地址,默认使用自定义器设置
* - phone: 电话/手机,默认使用自定义器设置
* - email: 邮箱地址,默认使用自定义器设置
* - map_embed_code: 地图嵌入代码默认使用自定义器设置或Google-maps.txt文件
* - map_height: 地图高度支持px、vh、%单位默认400px
*
* 注意事项:
* - 如果未设置地图嵌入代码,将自动读取 /docs/Google-maps.txt 文件中的默认地图代码
* - 样式设置(背景色、文字色、图标色)只能通过自定义器设置,短代码不支持覆盖
* - 地图高度必须包含有效的CSS单位px、vh、%否则将使用默认值400px
* - 联系信息支持换行在office_address中使用\n表示换行
*/
// 注册nenghui_overseas_services短代码
function nenghui_overseas_services_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-overseas-services',
'class' => '',
'title' => 'Overseas Services',
'description' => 'Our service team delivers diversified solutions tailored to client requirements, including product training, installation guidance, and after-sales support. NengHui ESS\'s specialized expert team provides comprehensive on-site services covering Uninterruptible Power Supplies (UPS), modular data centers, solar energy, and Energy Storage Systems (ESS), ensuring your power systems operate at peak performance.',
'height' => '400px',
'show_animation' => 'true'
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $overseas_services_shortcode_atts;
$overseas_services_shortcode_atts = $atts;
// 包含overseas-services模板
include get_template_directory() . '/template-parts/blocks/block-overseas-services.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_overseas_services', 'nenghui_overseas_services_shortcode');
/**
* Overseas Services 短代码使用示例:
*
* 基本用法:
* [nenghui_overseas_services]
*
* 自定义标题和描述:
* [nenghui_overseas_services title="海外服务" description="我们的服务团队..."]
*
* 完整参数:
* [nenghui_overseas_services
* id="custom-overseas-services"
* class="custom-class"
* title="Overseas Services"
* description="Our service team delivers..."
* height="500px"
* show_animation="true"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-overseas-services'
* - class: 额外CSS类
* - title: 区块标题,默认为 'Overseas Services'
* - description: 服务描述文本
* - height: 区块高度支持px、vh、%等单位,默认为 '400px'
* - show_animation: 是否显示动画效果,默认为 'true'
*
* 注意事项:
* - 背景图片固定使用 Overseas-Services-bg.webp
* - 父容器宽度100%内容容器宽度80%
* - 支持响应式布局和动画效果
*/
// 注册nenghui_faq短代码
function nenghui_faq_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-faq',
'class' => '',
'title' => 'Frequently Asked Questions',
'posts_per_page' => '-1', // 显示数量,-1表示显示所有
'order_by' => 'menu_order', // 排序字段
'order' => 'ASC', // 排序方向
'show_animation' => 'true'
), $atts);
// 验证和清理参数
if (!empty($atts['posts_per_page'])) {
$posts_count = intval($atts['posts_per_page']);
if ($posts_count < -1) {
$atts['posts_per_page'] = '-1'; // 默认显示所有
}
}
if (!empty($atts['order_by'])) {
$valid_orderby = array('date', 'modified', 'title', 'menu_order', 'rand');
if (!in_array($atts['order_by'], $valid_orderby)) {
$atts['order_by'] = 'menu_order'; // 默认值
}
}
if (!empty($atts['order'])) {
$atts['order'] = strtoupper($atts['order']);
if (!in_array($atts['order'], array('ASC', 'DESC'))) {
$atts['order'] = 'ASC'; // 默认值
}
}
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $faq_shortcode_atts;
$faq_shortcode_atts = $atts;
// 包含faq模板
include get_template_directory() . '/template-parts/blocks/block-faq.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_faq', 'nenghui_faq_shortcode');
/**
* FAQ 短代码使用示例:
*
* 基本用法:
* [nenghui_faq]
*
* 限制显示数量:
* [nenghui_faq posts_per_page="5"]
*
* 完整参数:
* [nenghui_faq
* id="custom-faq"
* class="custom-class"
* title="常见问题"
* posts_per_page="10"
* order_by="date"
* order="DESC"
* show_animation="true"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-faq'
* - class: 额外CSS类
* - title: 区块标题,默认为 'Frequently Asked Questions'
* - posts_per_page: 显示数量,-1表示显示所有默认为 -1
* - order_by: 排序字段date/modified/title/menu_order/rand默认为 menu_order
* - order: 排序方向ASC/DESC默认为 ASC
* - show_animation: 是否显示动画效果,默认为 'true'
*
* 注意事项:
* - FAQ内容通过后台"FAQ管理"菜单添加和管理
* - 支持手风琴折叠效果
* - 问题标题背景使用 faq-title-bg.webp 图片
* - 支持排序功能
* - 答案内容支持富文本编辑
* - 可通过menu_order字段自定义排序
*
* 后台使用说明:
* 1. 在WordPress后台可以看到"FAQ管理"菜单
* 2. 点击"添加新FAQ"创建FAQ项目
* 3. 设置问题标题title和答案内容content
* 4. 设置排序值(页面属性中的排序字段)
* 5. 发布后即可在前台显示
*/
// 注册nenghui_cases短代码
function nenghui_cases_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-cases',
'class' => '',
'title' => 'Cases',
'posts_per_page' => '6', // 每页显示数量
'columns' => '3', // 每行显示列数
'show_pagination' => 'true', // 是否显示分页
'show_tabs' => 'true', // 是否显示选项卡
'default_category' => 'power-station', // 默认显示的分类
'show_animation' => 'true'
), $atts);
// 验证和清理参数
if (!empty($atts['posts_per_page'])) {
$posts_count = intval($atts['posts_per_page']);
if ($posts_count < 1) {
$atts['posts_per_page'] = '6'; // 默认值
}
}
if (!empty($atts['columns'])) {
$columns = intval($atts['columns']);
if ($columns < 1 || $columns > 4) {
$atts['columns'] = '3'; // 默认值
}
}
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $cases_shortcode_atts;
$cases_shortcode_atts = $atts;
// 包含cases模板
include get_template_directory() . '/template-parts/blocks/block-cases.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_cases', 'nenghui_cases_shortcode');
/**
* Cases 短代码使用示例:
*
* 基本用法:
* [nenghui_cases]
*
* 自定义参数:
* [nenghui_cases posts_per_page="9" columns="3"]
*
* 完整参数:
* [nenghui_cases
* id="custom-cases"
* class="custom-class"
* title="项目案例"
* posts_per_page="6"
* columns="3"
* show_pagination="true"
* show_tabs="true"
* default_category="power-station"
* show_animation="true"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-cases'
* - class: 额外CSS类
* - title: 区块标题,默认为 'Cases'
* - posts_per_page: 每页显示数量,默认为 6
* - columns: 每行显示列数1-4默认为 3
* - show_pagination: 是否显示分页,默认为 'true'
* - show_tabs: 是否显示选项卡,默认为 'true'
* - default_category: 默认显示的分类slug默认为 'power-station'
* - show_animation: 是否显示动画效果,默认为 'true'
*
* 注意事项:
* - 案例内容通过后台"案例展示"菜单添加和管理
* - 支持三个默认分类Power Station、PV Project、Agricultural Solar
* - 每个案例需要设置特色图像、标题、摘要
* - 案例详情页使用 cases-content.php 模板
* - 支持响应式布局,自动适应不同屏幕宽度
* - 使用CSS Grid布局支持auto-fill和auto-fit
*
* 后台使用说明:
* 1. 在WordPress后台可以看到"案例展示"菜单
* 2. 点击"添加新案例"创建案例项目
* 3. 设置案例标题、内容、摘要和特色图像
* 4. 选择案例分类Power Station/PV Project/Agricultural Solar
* 5. 发布后即可在前台显示
* 6. 案例详情页会自动使用 cases-content.php 模板
*/
// AJAX处理函数加载案例数据
function load_cases_ajax() {
// 验证nonce
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'load_cases_nonce')) {
wp_die('Security check failed');
}
$category = sanitize_text_field($_POST['category']);
$page = intval($_POST['page']);
$posts_per_page = intval($_POST['posts_per_page']);
$columns = intval($_POST['columns']);
$show_pagination = $_POST['show_pagination'] === 'true';
// 构建查询参数
$args = array(
'post_type' => 'cases',
'post_status' => 'publish',
'posts_per_page' => $posts_per_page,
'paged' => $page,
'orderby' => 'date',
'order' => 'DESC'
);
// 如果指定了分类且不是'all'
if ($category !== 'all') {
$args['tax_query'] = array(
array(
'taxonomy' => 'case_category',
'field' => 'slug',
'terms' => $category
)
);
}
$query = new WP_Query($args);
if ($query->have_posts()) {
ob_start();
?>
<div class="cases-grid" style="grid-template-columns: repeat(auto-fill, minmax(<?php echo $columns <= 2 ? '400px' : '350px'; ?>, 1fr));">
<?php while ($query->have_posts()) : $query->the_post(); ?>
<article class="case-card">
<div class="case-card-image">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail('nenghui-large', array('alt' => get_the_title())); ?>
<?php else : ?>
<img src="<?php echo get_template_directory_uri(); ?>/assets/images/NaN-img.png" alt="<?php the_title(); ?>" />
<?php endif; ?>
<div class="case-card-overlay">
<a href="<?php the_permalink(); ?>" class="btn btn-light btn-sm">View Details</a>
</div>
</div>
<div class="case-card-content">
<h3 class="case-card-title">
<a href="<?php the_permalink(); ?>" class="text-decoration-none">
<?php the_title(); ?>
</a>
</h3>
<div class="case-card-description">
<?php
$excerpt = get_the_excerpt();
if (empty($excerpt)) {
$excerpt = wp_trim_words(get_the_content(), 20, '...');
}
echo $excerpt;
?>
</div>
<div class="case-card-footer">
<a href="<?php the_permalink(); ?>" class="case-read-more">
Read More
</a>
</div>
</div>
</article>
<?php endwhile; ?>
</div>
<?php
$html = ob_get_clean();
// 生成分页
$pagination = '';
if ($show_pagination && $query->max_num_pages > 1) {
ob_start();
?>
<div class="cases-pagination">
<?php
$big = 999999999; // 需要一个不太可能碰撞的整数
$pagination_links = paginate_links(array(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'format' => '?paged=%#%',
'current' => $page,
'total' => $query->max_num_pages,
'prev_text' => '',
'next_text' => '',
'type' => 'array',
'end_size' => 1,
'mid_size' => 2
));
if ($pagination_links) {
foreach ($pagination_links as $link) {
// 替换class以匹配我们的样式
$link = str_replace('page-numbers', 'page-numbers', $link);
echo $link;
}
}
?>
</div>
<?php
$pagination = ob_get_clean();
}
wp_reset_postdata();
wp_send_json_success(array(
'html' => $html,
'pagination' => $pagination,
'found_posts' => $query->found_posts,
'max_pages' => $query->max_num_pages
));
} else {
wp_send_json_success(array(
'html' => '<div class="text-center py-5"><p class="text-muted">暂无案例数据</p></div>',
'pagination' => '',
'found_posts' => 0,
'max_pages' => 0
));
}
}
add_action('wp_ajax_load_cases', 'load_cases_ajax');
add_action('wp_ajax_nopriv_load_cases', 'load_cases_ajax');
// 注册nenghui_products_banner短代码
function nenghui_products_banner_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => 'nenghui-products-banner-shortcode',
'class' => '',
'show_animation' => 'true',
'autoplay' => '', // 空值表示使用自定义器设置
'autoplay_delay' => '' // 空值表示使用自定义器设置
), $atts);
// 开始输出缓冲
ob_start();
// 设置全局变量供模板使用
global $products_banner_shortcode_atts;
$products_banner_shortcode_atts = $atts;
// 包含产品Banner模板
include get_template_directory() . '/template-parts/blocks/black-products-banner.php';
// 返回缓冲的内容
return ob_get_clean();
}
add_shortcode('nenghui_products_banner', 'nenghui_products_banner_shortcode');
add_shortcode('products_banner', 'nenghui_products_banner_shortcode'); // 简化版本
/**
* Global Map 短代码使用示例:
*
* 基本用法:
* [nenghui_global_map]
* [global_map]
*
* 自定义参数:
* [nenghui_global_map
* id="custom-global-map"
* class="custom-class"
* width="90%"
* max_width="1400px"]
*
* 参数说明:
* - id: 容器ID默认为 'nenghui-global-map'
* - class: 额外CSS类
* - width: 地图容器宽度,默认为 '80%'
* - max_width: 地图容器最大宽度,默认为 '1200px'
*
* 功能特点:
* - 响应式设计,适配移动端
* - 鼠标悬停显示项目信息卡片
* - 智能定位,卡片自动调整显示位置
* - 包含7个全球项目标记点
* - 支持自定义样式和尺寸
*/
/**
* 仓储和配送项目短代码
* Warehousing and Distribution Project Shortcode
*/
function nenghui_warehousing_distribution_shortcode($atts) {
// 解析短代码属性
$atts = shortcode_atts(array(
'id' => '',
'class' => '',
'show_animation' => 'true'
), $atts, 'warehousing_distribution');
// 设置全局变量供模板使用
global $warehousing_distribution_shortcode_atts;
$warehousing_distribution_shortcode_atts = $atts;
// 开始输出缓冲
ob_start();
// 包含模板文件
get_template_part('template-parts/blocks/block-warehousing-distribution');
// 获取输出内容
$output = ob_get_clean();
// 清理全局变量
unset($warehousing_distribution_shortcode_atts);
return $output;
}
// 注册短代码
add_shortcode('warehousing_distribution', 'nenghui_warehousing_distribution_shortcode');
add_shortcode('nenghui_warehousing_distribution', 'nenghui_warehousing_distribution_shortcode');
/**
* Black About Info - Warehousing and Distribution Project 短代码
*/
function nenghui_black_about_info_shortcode($atts) {
// 确保 $atts 是数组
if (!is_array($atts)) {
$atts = array();
}
// 设置默认参数
$atts = shortcode_atts(array(
'id' => '',
'class' => '',
'show_animation' => 'true'
), $atts, 'black_about_info');
// 设置全局变量供模板使用
global $black_about_info_shortcode_atts;
$black_about_info_shortcode_atts = $atts;
// 开始输出缓冲
ob_start();
// 包含模板文件
include get_template_directory() . '/template-parts/blocks/black-about-info.php';
// 获取输出内容
$output = ob_get_clean();
// 清理全局变量
unset($black_about_info_shortcode_atts);
return $output;
}
// 注册短代码
add_shortcode('black_about_info', 'nenghui_black_about_info_shortcode');
add_shortcode('nenghui_black_about_info', 'nenghui_black_about_info_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/blocks/block-process.php';
$output = ob_get_clean();
// 清理全局变量
unset($business_process_shortcode_values);
return $output;
}
add_shortcode('business_process', 'nenghui_business_process_shortcode');