chore: import MING theme source

This commit is contained in:
2026-09-23 09:29:09 +08:00
parent 63b5a4beba
commit d9946a3da4
53 changed files with 4476 additions and 0 deletions
+126
View File
@@ -0,0 +1,126 @@
<?php
/**
* 單一投票活動頁.
*
* @package MING
*/
get_header();
$ming_cid = get_the_ID();
$ming_goal = (int) get_post_meta( $ming_cid, 'ming_goal', true ) ?: ming_vote_goal();
$ming_deadline = get_post_meta( $ming_cid, 'ming_deadline', true );
$ming_expired = ming_campaign_expired( $ming_cid );
$ming_uid = get_current_user_id();
$ming_voted = array();
$ming_voted_sk = array(); // pid => vid.
foreach ( $ming_uid ? (array) get_user_meta( $ming_uid, 'ming_voted_c' . $ming_cid, true ) : array() as $ming_e ) {
$ming_ep = explode( ':', (string) $ming_e );
$ming_voted[] = (int) $ming_ep[0];
if ( ! empty( $ming_ep[1] ) ) { $ming_voted_sk[ (int) $ming_ep[0] ] = (int) $ming_ep[1]; }
}
$ming_items = array();
foreach ( array_map( 'intval', (array) get_post_meta( $ming_cid, 'ming_products', true ) ) as $ming_pid ) {
$ming_prod = wc_get_product( $ming_pid );
if ( ! $ming_prod || 'publish' !== get_post_status( $ming_pid ) ) { continue; }
$ming_colors = ming_product_color_options( $ming_prod );
foreach ( $ming_colors as $ming_ci => $ming_co ) {
$ming_colors[ $ming_ci ]['votes'] = ! empty( $ming_co['vid'] ) ? (int) get_post_meta( $ming_co['vid'], 'ming_votes_c' . $ming_cid, true ) : 0;
}
// 預設選中色:商品預設屬性 > 使用者已投的色 > 第一個.
$ming_dslug = '';
$ming_defs = $ming_prod->get_default_attributes();
if ( ! empty( $ming_defs['pa_color'] ) ) { $ming_dslug = $ming_defs['pa_color']; }
$ming_sel = 0;
foreach ( $ming_colors as $ming_ci => $ming_co ) {
if ( $ming_co['slug'] && $ming_co['slug'] === $ming_dslug ) { $ming_sel = $ming_ci; break; }
}
if ( isset( $ming_voted_sk[ $ming_pid ] ) ) {
foreach ( $ming_colors as $ming_ci => $ming_co ) {
if ( ! empty( $ming_co['vid'] ) && $ming_co['vid'] === $ming_voted_sk[ $ming_pid ] ) { $ming_sel = $ming_ci; break; }
}
}
$ming_items[] = array(
'id' => $ming_pid,
'name' => $ming_prod->get_name(),
'link' => get_permalink( $ming_pid ),
'img' => get_the_post_thumbnail_url( $ming_pid, 'large' ),
'desc' => trim( wp_strip_all_tags( $ming_prod->get_short_description() ) ),
'colors' => $ming_colors,
'sel' => $ming_sel,
'votes' => (int) get_post_meta( $ming_pid, 'ming_votes_c' . $ming_cid, true ),
);
}
usort( $ming_items, function( $a, $b ) { return $b['votes'] - $a['votes']; } );
?>
<section class="page-hero">
<div class="wrap">
<p class="eyebrow reveal">NEW ARRIVAL · VOTE</p>
<h1 class="h1 reveal"><?php the_title(); ?></h1>
<p class="sub reveal">
<?php if ( $ming_expired ) : ?>
本活動已截止,感謝大家的參與。
<?php elseif ( $ming_deadline ) : ?>
活動截止:<?php echo esc_html( date_i18n( 'Y年n月j日 H:i', strtotime( $ming_deadline ) ) ); ?> · 每人每款一票
<?php else : ?>
告訴我們你最想要哪一款,呼聲最高的款式將優先生產。每人每款一票。
<?php endif; ?>
</p>
</div>
</section>
<section class="section">
<div class="wrap">
<?php if ( empty( $ming_items ) ) : ?>
<p class="vote-empty reveal">本活動尚未設定參與商品。</p>
<?php else : ?>
<div class="prod-grid vote-grid">
<?php foreach ( $ming_items as $ming_it ) :
$ming_pct = min( 100, round( $ming_it['votes'] / $ming_goal * 100 ) );
$ming_voted_this = in_array( $ming_it['id'], $ming_voted, true );
?>
<article class="pcard vcard reveal" data-id="<?php echo esc_attr( $ming_it['id'] ); ?>" data-cid="<?php echo esc_attr( $ming_cid ); ?>" data-goal="<?php echo esc_attr( $ming_goal ); ?>" data-vid="<?php echo esc_attr( ! empty( $ming_it['colors'][ $ming_it['sel'] ]['vid'] ) ? $ming_it['colors'][ $ming_it['sel'] ]['vid'] : 0 ); ?>">
<a class="ph" href="<?php echo esc_url( $ming_it['link'] ); ?>"><?php if ( $ming_it['img'] ) : ?><img src="<?php echo esc_url( $ming_it['img'] ); ?>" alt="<?php echo esc_attr( $ming_it['name'] ); ?>" loading="lazy"><?php endif; ?></a>
<div class="pb">
<h3><?php echo esc_html( $ming_it['name'] ); ?></h3>
<?php if ( $ming_it['desc'] ) : ?><p><?php echo esc_html( $ming_it['desc'] ); ?></p><?php endif; ?>
<?php if ( $ming_it['colors'] ) : ?>
<span class="colors vote-colors"><?php foreach ( $ming_it['colors'] as $ming_ci => $ming_col ) : ?>
<span class="cdot-wrap"><button type="button" class="cdot<?php echo $ming_ci === $ming_it['sel'] ? ' is-on' : ''; ?>" style="background:<?php echo esc_attr( $ming_col['hex'] ); ?>" title="<?php echo esc_attr( $ming_col['name'] ); ?>" aria-label="<?php echo esc_attr( $ming_col['name'] ); ?>" data-vid="<?php echo esc_attr( $ming_col['vid'] ); ?>"<?php if ( ! empty( $ming_col['img'] ) ) : ?> data-img="<?php echo esc_url( $ming_col['img'] ); ?>"<?php endif; ?> data-link="<?php echo esc_url( $ming_col['link'] ); ?>"></button><em class="cdot-n"><?php echo (int) $ming_col['votes']; ?></em></span>
<?php endforeach; ?></span>
<?php endif; ?>
<div class="vote-meta">
<span class="vcount"><b><?php echo esc_html( $ming_it['votes'] ); ?></b> 人想要</span>
<span class="vgoal">目標 <?php echo esc_html( $ming_goal ); ?> 人</span>
</div>
<div class="vote-bar"><i style="width:<?php echo esc_attr( $ming_pct ); ?>%"></i></div>
<?php if ( $ming_expired ) : ?>
<button type="button" class="vote-btn voted" disabled>已截止</button>
<?php else : ?>
<button type="button" class="vote-btn<?php echo $ming_voted_this ? ' voted' : ''; ?>"<?php echo $ming_voted_this ? ' disabled' : ''; ?>>
<?php echo $ming_voted_this ? '已支持 ✓' : '我想要這款'; ?>
</button>
<?php endif; ?>
</div>
</article>
<?php endforeach; ?>
</div>
<p class="vote-note reveal"><?php echo $ming_expired ? '感謝參與,結果將作為新品備貨依據。' : '登入會員後即可投票,每人每款一票。票數即時更新。'; ?></p>
<div class="vote-share reveal">
<p class="vote-share-text">覺得哪一款最該生產?分享給朋友一起來投票,讓呼聲被看見。</p>
<?php
ming_share_bar( array(
'title' => get_the_title() . '|MING 明命 新品許願池',
'text' => '我正在 MING 明命的新品許願池投票:' . get_the_title() . ',一起來許願,呼聲最高的款式將優先生產!',
'label' => '分享這個許願活動',
) );
?>
</div>
<?php endif; ?>
</div>
</section>
<?php
get_footer();