|
|
<?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: 文章数量,默认为12(3行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');
|