File: /home/ayxmplky/public_html/wp-content/themes/tactic/inc/customizer.php
<?php
/**
* Theme Customizer — настройки сайта
*
* @package tactic
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function tactic_customize_register( WP_Customize_Manager $wp_customize ): void {
/* ── Панель ── */
$wp_customize->add_panel( 'tactic_panel', [
'title' => __( 'Настройки сайта TACTIC', 'tactic' ),
'priority' => 30,
] );
/* ──────────────────────────────
Секция: Контактная информация
────────────────────────────── */
$wp_customize->add_section( 'tactic_contact', [
'title' => __( '联系方式', 'tactic' ),
'panel' => 'tactic_panel',
] );
$contact_fields = [
'tactic_address_cn' => [ __( '地址(中文)', 'tactic' ), 'sanitize_text_field', '圣彼得堡, Staroderevenskaya 大街, 11号, 2号楼' ],
'tactic_address_en' => [ __( 'Address (EN)', 'tactic' ), 'sanitize_text_field', 'St. Petersburg, Staroderevenskaya St., 11, Bldg 2' ],
'tactic_postal_code' => [ __( '邮政编码', 'tactic' ), 'sanitize_text_field', '' ],
'tactic_email_eu' => [ __( '欧洲邮箱', 'tactic' ), 'sanitize_email', '' ],
'tactic_email_global' => [ __( '全球邮箱', 'tactic' ), 'sanitize_email', '' ],
'tactic_phone' => [ __( '联系电话', 'tactic' ), 'sanitize_text_field', '' ],
'tactic_instagram_url' => [ __( 'Instagram 链接', 'tactic' ), 'esc_url_raw', '' ],
'tactic_wechat_url' => [ __( '微信公众号链接', 'tactic' ), 'esc_url_raw', '' ],
'tactic_linkedin_url' => [ __( 'LinkedIn 链接', 'tactic' ), 'esc_url_raw', '' ],
'tactic_wechat_qr_id' => [ __( '微信二维码 (图片ID)', 'tactic' ), 'absint', '' ],
'tactic_db_badge_id' => [ __( 'Dun & Bradstreet бейдж (ID)', 'tactic' ), 'absint', '' ],
];
foreach ( $contact_fields as $id => [$label, $sanitize, $default] ) {
$wp_customize->add_setting( $id, [
'default' => $default,
'sanitize_callback' => $sanitize,
] );
// QR и D&B — медиазагрузчик
if ( in_array( $id, [ 'tactic_wechat_qr_id', 'tactic_db_badge_id' ], true ) ) {
$wp_customize->add_control(
new WP_Customize_Media_Control( $wp_customize, $id, [
'label' => $label,
'section' => 'tactic_contact',
'mime_type' => 'image',
] )
);
} else {
$wp_customize->add_control( $id, [
'label' => $label,
'section' => 'tactic_contact',
'type' => 'text',
] );
}
}
/* ──────────────────────────────
Секция: ICP-лицензия
────────────────────────────── */
$wp_customize->add_section( 'tactic_icp', [
'title' => __( 'ICP-лицензия', 'tactic' ),
'panel' => 'tactic_panel',
] );
$wp_customize->add_setting( 'tactic_icp_number', [
'default' => '',
'sanitize_callback' => 'sanitize_text_field',
] );
$wp_customize->add_control( 'tactic_icp_number', [
'label' => __( 'Номер ICP-лицензии', 'tactic' ),
'description' => __( 'Например: 沪icp备XXXXXXXX号', 'tactic' ),
'section' => 'tactic_icp',
'type' => 'text',
] );
/* ──────────────────────────────
Секция: Статистика (карта)
────────────────────────────── */
$wp_customize->add_section( 'tactic_stats', [
'title' => __( 'Статистика (карта мира)', 'tactic' ),
'panel' => 'tactic_panel',
] );
$stats = [
'tactic_stat1' => [ __( 'Стат 1', 'tactic' ), '1000+ моделей' ],
'tactic_stat2' => [ __( 'Стат 2', 'tactic' ), 'Партнёры' ],
'tactic_stat3' => [ __( 'Стат 3', 'tactic' ), '10+ лет опыта' ],
'tactic_stat4' => [ __( 'Стат 4', 'tactic' ), 'Складская инфраструктура' ],
'tactic_stat5' => [ __( 'Стат 5', 'tactic' ), 'Стабильные поставки' ],
];
foreach ( $stats as $id => [$label, $default] ) {
$wp_customize->add_setting( $id, [
'default' => $default,
'sanitize_callback' => 'sanitize_text_field',
] );
$wp_customize->add_control( $id, [
'label' => $label,
'section' => 'tactic_stats',
'type' => 'text',
] );
}
/* ──────────────────────────────
Секция: Кнопка "О нас"
────────────────────────────── */
$wp_customize->add_section( 'tactic_about_section', [
'title' => __( '"关于我们" 区块按钮', 'tactic' ),
'panel' => 'tactic_panel',
] );
$wp_customize->add_setting( 'tactic_about_btn_text', [
'default' => __( '了解更多公司信息', 'tactic' ),
'sanitize_callback' => 'sanitize_text_field',
] );
$wp_customize->add_control( 'tactic_about_btn_text', [
'label' => __( 'Текст кнопки', 'tactic' ),
'section' => 'tactic_about_section',
'type' => 'text',
] );
$wp_customize->add_setting( 'tactic_about_btn_url', [
'default' => '/about/',
'sanitize_callback' => 'esc_url_raw',
] );
$wp_customize->add_control( 'tactic_about_btn_url', [
'label' => __( 'Ссылка кнопки', 'tactic' ),
'section' => 'tactic_about_section',
'type' => 'text',
] );
/* ──────────────────────────────
Секция: Текст футера
────────────────────────────── */
$wp_customize->add_section( 'tactic_footer_section', [
'title' => __( 'Футер — дополнительно', 'tactic' ),
'panel' => 'tactic_panel',
] );
$wp_customize->add_setting( 'tactic_footer_credit', [
'default' => '',
'sanitize_callback' => 'sanitize_text_field',
] );
$wp_customize->add_control( 'tactic_footer_credit', [
'label' => __( 'Текст авторских прав / разработчика', 'tactic' ),
'section' => 'tactic_footer_section',
'type' => 'text',
] );
}
add_action( 'customize_register', 'tactic_customize_register' );