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.
111 lines
4.6 KiB
111 lines
4.6 KiB
<?php
|
|
/**
|
|
* 股票信息区块模板
|
|
*
|
|
* @package Nenghui_Energy_Theme
|
|
*/
|
|
|
|
// 防止直接访问
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
// 获取区块属性(支持直接调用和短代码调用)
|
|
global $stock_info_attributes;
|
|
|
|
// 优先使用全局变量(短代码调用),其次使用直接传入的属性
|
|
$current_attributes = !empty($stock_info_attributes) ? $stock_info_attributes : (isset($attributes) ? $attributes : array());
|
|
|
|
$stock_code = isset($current_attributes['stockCode']) ? $current_attributes['stockCode'] : 'sz301046';
|
|
$block_id = isset($current_attributes['blockId']) ? $current_attributes['blockId'] : 'stock-info-' . uniqid();
|
|
$theme = isset($current_attributes['theme']) ? $current_attributes['theme'] : 'default';
|
|
$show_chart = isset($current_attributes['showChart']) ? $current_attributes['showChart'] : false;
|
|
|
|
// 加载样式和脚本
|
|
wp_enqueue_style('stock-info-style', get_template_directory_uri() . '/assets/css/stock-info.css', array(), '1.0.0');
|
|
wp_enqueue_script('stock-info-script', get_template_directory_uri() . '/assets/js/stock-info.js', array('jquery'), '1.0.0', true);
|
|
|
|
// 本地化脚本数据
|
|
wp_localize_script('stock-info-script', 'stockInfoAjax', array(
|
|
'apiUrl' => 'http://sqt.gtimg.cn/q=',
|
|
'nonce' => wp_create_nonce('stock_info_nonce')
|
|
));
|
|
?>
|
|
|
|
<div class="stock-info-block theme-<?php echo esc_attr($theme); ?>" id="<?php echo esc_attr($block_id); ?>" data-stock-code="<?php echo esc_attr($stock_code); ?>">
|
|
<div class="stock-info-container">
|
|
<!-- 股票基本信息头部 -->
|
|
<div class="stock-header">
|
|
<div class="stock-basic-info">
|
|
<span class="stock-label">股票代码:</span>
|
|
<span class="stock-code" id="stock-code-display"><?php echo esc_html($stock_code); ?></span>
|
|
</div>
|
|
<div class="update-time">
|
|
<span class="update-label">截至</span>
|
|
<span class="update-timestamp" id="update-time">加载中...</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 主要股票数据 -->
|
|
<div class="stock-main-data">
|
|
<div class="stock-price-section">
|
|
<div class="current-price">
|
|
<span class="price-value" id="current-price">--</span>
|
|
<div class="price-change">
|
|
<span class="change-value" id="price-change">--</span>
|
|
<span class="change-percent" id="change-percent">--</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stock-volume-section">
|
|
<div class="volume-data">
|
|
<span class="volume-value" id="volume-value">--</span>
|
|
<span class="volume-label">成交量 (手)</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stock-amount-section">
|
|
<div class="amount-data">
|
|
<span class="amount-value" id="amount-value">--</span>
|
|
<span class="amount-label">成交额 (万元)</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 详细数据 -->
|
|
<div class="stock-details" style="display: none;">
|
|
<div class="detail-row">
|
|
<div class="detail-item">
|
|
<span class="detail-label">今开:</span>
|
|
<span class="detail-value" id="open-price">--</span>
|
|
</div>
|
|
<div class="detail-item">
|
|
<span class="detail-label">昨收:</span>
|
|
<span class="detail-value" id="prev-close">--</span>
|
|
</div>
|
|
<div class="detail-item">
|
|
<span class="detail-label">最高:</span>
|
|
<span class="detail-value" id="high-price">--</span>
|
|
</div>
|
|
<div class="detail-item">
|
|
<span class="detail-label">最低:</span>
|
|
<span class="detail-value" id="low-price">--</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 加载状态 -->
|
|
<div class="loading-state" id="loading-indicator">
|
|
<div class="loading-spinner"></div>
|
|
<span class="loading-text">正在加载股票数据...</span>
|
|
</div>
|
|
|
|
<!-- 错误状态 -->
|
|
<div class="error-state" id="error-indicator" style="display: none;">
|
|
<div class="error-icon">⚠</div>
|
|
<span class="error-text">数据加载失败,请稍后重试</span>
|
|
<button class="retry-button" onclick="window.stockInfoManager.refreshData()">重新加载</button>
|
|
</div>
|
|
</div>
|
|
</div>
|