<?php
/**
 * 发音-含义对管理功能
 * 用于精确处理汉字的多音多义特性
 */

// 防止直接访问
if (!defined('ABSPATH')) {
    exit;
}

class PronunciationMeaningPairs {
    
    public function __construct() {
        add_action('init', array($this, 'register_post_type'));
        add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
        add_action('save_post', array($this, 'save_pronunciation_meta'));
        add_action('admin_enqueue_scripts', array($this, 'admin_scripts'));
    }
    
    /**
     * 注册发音-含义对文章类型
     */
    public function register_post_type() {
        $labels = array(
            'name'                  => '发音含义对',
            'singular_name'         => '发音含义对',
            'menu_name'             => '发音含义对',
            'name_admin_bar'        => '发音含义对',
            'archives'              => '发音含义对档案',
            'attributes'            => '发音含义对属性',
            'parent_item_colon'     => '父级发音含义对',
            'all_items'             => '所有发音含义对',
            'add_new_item'          => '新增发音含义对',
            'add_new'               => '新增',
            'new_item'              => '新发音含义对',
            'edit_item'             => '编辑发音含义对',
            'update_item'           => '更新发音含义对',
            'view_item'             => '查看发音含义对',
            'view_items'            => '查看发音含义对',
            'search_items'          => '搜索发音含义对',
            'not_found'             => '未找到',
            'not_found_in_trash'    => '回收站中没有',
            'featured_image'        => '特色图像',
            'set_featured_image'    => '设置特色图像',
            'remove_featured_image' => '移除特色图像',
            'use_featured_image'    => '用作特色图像',
            'insert_into_item'      => '插入到发音含义对中',
            'uploaded_to_this_item' => '上传到此发音含义对',
            'items_list'            => '发音含义对列表',
            'items_list_navigation' => '发音含义对列表导航',
            'filter_items_list'     => '筛选发音含义对列表',
        );

        $args = array(
            'label'                 => '发音含义对',
            'description'           => '汉字发音与含义的对应关系',
            'labels'                => $labels,
            'supports'              => array('title', 'editor', 'author', 'excerpt', 'comments', 'revisions'),
            'hierarchical'          => false,
            'public'                => false,
            'show_ui'          => true,
            'show_in_menu'          => 'edit.php?post_type=chinese_character',
            'menu_position'         => 9,
            'menu_icon'             => 'dashicons-clipboard',
            'show_in_admin_bar'     => true,
            'show_in_nav_menus'     => false,
            'can_export'            => true,
            'has_archive'           => false,
            'exclude_from_search'   => true,
            'publicly_queryable'    => false,
            'capability_type'       => 'post',
            'show_in_rest'          => true,
        );

        register_post_type('pronunciation_pair', $args);
    }
    
    /**
     * 添加元框
     */
    public function add_meta_boxes() {
        add_meta_box(
            'pronunciation-details',
            '发音详细信息',
            array($this, 'render_pronunciation_details_meta_box'),
            'pronunciation_pair',
            'normal',
            'high'
        );
        
        // 在汉字编辑页面添加显示相关发音含义对的元框
        add_meta_box(
            'character-pronunciations',
            '汉字发音含义对',
            array($this, 'render_character_pronunciations_meta_box'),
            'chinese_character',
            'normal',
            'default'
        );
    }
    
    /**
     * 渲染发音详细信息元框
     */
    public function render_pronunciation_details_meta_box($post) {
        $pinyin = get_post_meta($post->ID, '_pronunciation_pinyin', true);
        $examples = get_post_meta($post->ID, '_pronunciation_examples', true);
        $related_character = get_post_meta($post->ID, '_pronunciation_related_character', true);
        $part_of_speech = get_post_meta($post->ID, '_pronunciation_part_of_speech', true);
        
        // 如果是通过汉字页面创建的发音含义对，预填充关联汉字
        if (isset($_GET['related_character']) && !$related_character) {
            $related_character = intval($_GET['related_character']);
        }
        
        // 获取所有汉字文章
        $characters = get_posts(array(
            'post_type' => 'chinese_character',
            'post_status' => 'publish',
            'numberposts' => -1,
            'orderby' => 'title',
            'order' => 'ASC'
        ));
        
        // 获取插件中的拼音列表
        $pinyin_list = array();
        if (class_exists('ChineseCharacterDictionary')) {
            // 尝试获取插件实例
            if (method_exists('ChineseCharacterDictionary', 'get_instance')) {
                $plugin = ChineseCharacterDictionary::get_instance();
                $pinyin_list = $plugin->pinyin_list;
            } else {
                // 如果无法获取实例，则使用默认的拼音列表
                $pinyin_list = $this->get_default_pinyin_list();
            }
        } else {
            $pinyin_list = $this->get_default_pinyin_list();
        }
        
        wp_nonce_field('save_pronunciation_meta', 'pronunciation_meta_nonce');
        ?>
        <table class="form-table">
            <tr>
                <th><label for="pronunciation_pinyin">拼音</label></th>
                <td>
                    <select id="pronunciation_pinyin" name="pronunciation_pinyin[]" class="regular-text pinyin-select" multiple size="10">
                        <option value="" disabled>请选择拼音（可多选）</option>
                        <?php 
                        // 将存储的拼音字符串转换为数组，支持空格分隔
                        $selected_pinyins = !empty($pinyin) ? preg_split('/\s+/', $pinyin, -1, PREG_SPLIT_NO_EMPTY) : array();
                        foreach ($pinyin_list as $p): ?>
                            <option value="<?php echo esc_attr($p); ?>" <?php echo in_array($p, $selected_pinyins) ? 'selected' : ''; ?>><?php echo esc_html($p); ?></option>
                        <?php endforeach; ?>
                        <?php 
                        // 添加自定义拼音选项
                        $custom_pinyin = get_option('chinese_character_custom_pinyin', array());
                        if (!empty($custom_pinyin)): ?>
                            <optgroup label="自定义拼音">
                                <?php foreach ($custom_pinyin as $cp): ?>
                                    <option value="<?php echo esc_attr($cp); ?>" <?php echo in_array($cp, $selected_pinyins) ? 'selected' : ''; ?>><?php echo esc_html($cp); ?></option>
                                <?php endforeach; ?>
                            </optgroup>
                        <?php endif; ?>
                    </select>
                    <p class="description">在上方输入框中输入拼音可搜索过滤选项，按住 Ctrl 键可选择多个拼音（Windows）或按住 Cmd 键选择多个拼音（Mac）</p>
                    <p class="description">选择此含义对应的拼音（可多选）</p>
                </td>
            </tr>
            <tr>
                <th><label for="pronunciation_pinyin_custom">或输入自定义拼音</label></th>
                <td>
                    <input type="text" id="pronunciation_pinyin_custom" name="pronunciation_pinyin_custom" value="<?php echo esc_attr($pinyin); ?>" class="regular-text" />
                    <p class="description">如果拼音列表中没有，请在此输入完整拼音，例如：xiǎo míng</p>
                    <p class="description">
                        声调符号：<br>
                        第一声：ā ē ī ō ū ǖ<br>
                        第二声：á é í ó ú ǘ<br>
                        第三声：ǎ ě ǐ ǒ ǔ ǚ<br>
                        第四声：à è ì ò ù ǜ
                    </p>
                </td>
            </tr>
            <tr>
                <th><label for="pronunciation_part_of_speech">词性</label></th>
                <td>
                    <input type="text" id="pronunciation_part_of_speech" name="pronunciation_part_of_speech" value="<?php echo esc_attr($part_of_speech); ?>" class="regular-text" />
                    <p class="description">如：名词、动词、形容词等</p>
                </td>
            </tr>
            <tr>
                <th><label for="pronunciation_related_character">关联汉字</label></th>
                <td>
                    <select id="pronunciation_related_character" name="pronunciation_related_character" class="regular-text">
                        <option value="">请选择关联汉字</option>
                        <?php foreach ($characters as $character): ?>
                            <option value="<?php echo esc_attr($character->ID); ?>" <?php selected($character->ID, $related_character); ?>>
                                <?php echo esc_html($character->post_title); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                    <p class="description">选择此发音含义对所关联的汉字</p>
                </td>
            </tr>
            <tr>
                <th><label for="pronunciation_examples">使用示例</label></th>
                <td>
                    <textarea id="pronunciation_examples" name="pronunciation_examples" rows="5" class="large-text"><?php echo esc_textarea($examples); ?></textarea>
                    <p class="description">输入使用该读音的词语或句子示例，每行一个</p>
                </td>
            </tr>
        </table>
        <?php
    }
    
    /**
     * 获取默认拼音列表
     */
    private function get_default_pinyin_list() {
        return array(
            
             // A
        'a', 'ā', 'á', 'ǎ', 'à',
        'ai', 'āi', 'ái', 'ǎi', 'ài',
        'an', 'ān', 'án', 'ǎn', 'àn',
        'ang', 'āng', 'áng', 'ǎng', 'àng',
        'ao', 'āo', 'áo', 'ǎo', 'ào',
        
        // B
        'ba', 'bā', 'bá', 'bǎ', 'bà',
        'bo', 'bō', 'bó', 'bǒ', 'bò',
        'bai', 'bāi', 'bái', 'bǎi', 'bài',
        'bei', 'bēi', 'béi', 'běi', 'bèi',
        'bao', 'bāo', 'báo', 'bǎo', 'bào',
        'ban', 'bān', 'bán', 'bǎn', 'bàn',
        'ben', 'bēn', 'bén', 'běn', 'bèn',
        'bang', 'bāng', 'báng', 'bǎng', 'bàng',
        'beng', 'bēng', 'béng', 'běng', 'bèng',
        'bi', 'bī', 'bí', 'bǐ', 'bì',
        'bie', 'biē', 'bié', 'biě', 'biè',
        'biao', 'biāo', 'biáo', 'biǎo', 'biào',
        'bian', 'biān', 'bián', 'biǎn', 'biàn',
        'bin', 'bīn', 'bín', 'bǐn', 'bìn',
        'bing', 'bīng', 'bíng', 'bǐng', 'bìng',
        'bu', 'bū', 'bú', 'bǔ', 'bù',
        
        // C
        'ca', 'cā', 'cá', 'cǎ', 'cà',
        'ce', 'cē', 'cé', 'cě', 'cè',
        'cai', 'cāi', 'cái', 'cǎi', 'cài',
        'cao', 'cāo', 'cáo', 'cǎo', 'cào',
        'cou', 'cōu', 'còu', 'cǒu', 'còu',
        'can', 'cān', 'cán', 'cǎn', 'càn',
        'cen', 'cēn', 'cén', 'cěn', 'cèn',
        'cang', 'cāng', 'cáng', 'cǎng', 'càng',
        'ceng', 'cēng', 'céng', 'cěng', 'cèng',
        'ci', 'cī', 'cí', 'cǐ', 'cì',
        'cong', 'cōng', 'cóng', 'cǒng', 'còng',
        'cu', 'cū', 'cú', 'cǔ', 'cù',
        'cui', 'cuī', 'cuí', 'cuǐ', 'cuì',
        'cuan', 'cuān', 'cuán', 'cuǎn', 'cuàn',
        'cun', 'cūn', 'cún', 'cǔn', 'cùn',
        'chu', 'chū', 'chú', 'chǔ', 'chù',
        'chai', 'chāi', 'chái', 'chǎi', 'chài',
        'chao', 'chāo', 'cháo', 'chǎo', 'chào',
        'che', 'chē', 'ché', 'chě', 'chè',
        'chen', 'chēn', 'chén', 'chěn', 'chèn',
        'cheng', 'chēng', 'chéng', 'chěng', 'chèng',
        'chi', 'chī', 'chí', 'chǐ', 'chì',
        'chong', 'chōng', 'chóng', 'chǒng', 'chòng',
        'chou', 'chōu', 'chóu', 'chǒu', 'chòu',
        'chuai', 'chuāi', 'chuái', 'chuǎi', 'chuài',
        'chuan', 'chuān', 'chuán', 'chuǎn', 'chuàn',
        'chuang', 'chuāng', 'chuáng', 'chuǎng', 'chuàng',
        'chui', 'chuī', 'chuí', 'chuǐ', 'chuì',
        'chun', 'chūn', 'chún', 'chǔn', 'chùn',
        'chuo', 'chuō', 'chuó', 'chuǒ', 'chuò',
        
        // D
        'da', 'dā', 'dá', 'dǎ', 'dà',
        'de', 'dē', 'dé', 'dě', 'dè',
        'dai', 'dāi', 'dái', 'dǎi', 'dài',
        'dao', 'dāo', 'dáo', 'dǎo', 'dào',
        'dou', 'dōu', 'dóu', 'dǒu', 'dòu',
        'dan', 'dān', 'dán', 'dǎn', 'dàn',
        'den', 'dēn', 'dén', 'děn', 'dèn',
        'dang', 'dāng', 'dáng', 'dǎng', 'dàng',
        'deng', 'dēng', 'déng', 'děng', 'dèng',
        'di', 'dī', 'dí', 'dǐ', 'dì',
        'dia', 'diā', 'diá', 'diǎ', 'dià',
        'die', 'diē', 'dié', 'diě', 'diè',
        'diao', 'diāo', 'diáo', 'diǎo', 'diào',
        'diu', 'diū', 'diú', 'diǔ', 'diù',
        'dian', 'diān', 'dián', 'diǎn', 'diàn',
        'ding', 'dīng', 'díng', 'dǐng', 'dìng',
        'dong', 'dōng', 'dóng', 'dǒng', 'dòng',
        'du', 'dū', 'dú', 'dǔ', 'dù',
        'dui', 'duī', 'duí', 'duǐ', 'duì',
        'duan', 'duān', 'duán', 'duǎn', 'duàn',
        'dun', 'dūn', 'dún', 'dǔn', 'dùn',
        'duo', 'duō', 'duó', 'duǒ', 'duò',
        
        // E
        'e', 'ē', 'é', 'ě', 'è',
        'ei', 'ēi', 'éi', 'ěi', 'èi',
        'en', 'ēn', 'én', 'ěn', 'èn',
        'er', 'ēr', 'ér', 'ěr', 'èr',
        
        // F
        'fa', 'fā', 'fá', 'fǎ', 'fà',
        'fo', 'fō', 'fé', 'fě', 'fè',
        'fei', 'fēi', 'féi', 'fěi', 'fèi',
        'fou', 'fōu', 'fóu', 'fǒu', 'fòu',
        'fan', 'fān', 'fán', 'fǎn', 'fàn',
        'fen', 'fēn', 'fén', 'fěn', 'fèn',
        'fang', 'fāng', 'fáng', 'fǎng', 'fàng',
        'feng', 'fēng', 'féng', 'fěng', 'fèng',
        'fu', 'fū', 'fú', 'fǔ', 'fù',
        
        // G
        'ga', 'gā', 'gá', 'gǎ', 'gà',
        'ge', 'gē', 'gé', 'gě', 'gè',
        'gai', 'gāi', 'gái', 'gǎi', 'gài',
        'gao', 'gāo', 'gáo', 'gǎo', 'gào',
        'gou', 'gōu', 'góu', 'gǒu', 'gòu',
        'gan', 'gān', 'gán', 'gǎn', 'gàn',
        'gen', 'gēn', 'gén', 'gěn', 'gèn',
        'gang', 'gāng', 'gáng', 'gǎng', 'gàng',
        'geng', 'gēng', 'géng', 'gěng', 'gèng',
        'gu', 'gū', 'gú', 'gǔ', 'gù',
        'gua', 'guā', 'guá', 'guǎ', 'guà',
        'guo', 'guō', 'guó', 'guǒ', 'guò',
        'guai', 'guāi', 'guái', 'guǎi', 'guài',
        'guan', 'guān', 'guán', 'guǎn', 'guàn',
        'gun', 'gūn', 'gún', 'gǔn', 'gùn',
        'guang', 'guāng', 'guáng', 'guǎng', 'guàng',
        'gui', 'guī', 'guí', 'guǐ', 'guì',
        
        // H
        'ha', 'hā', 'há', 'hǎ', 'hà',
        'he', 'hē', 'hé', 'hě', 'hè',
        'hai', 'hāi', 'hái', 'hǎi', 'hài',
        'hao', 'hāo', 'háo', 'hǎo', 'hào',
        'hou', 'hōu', 'hóu', 'hǒu', 'hòu',
        'han', 'hān', 'hán', 'hǎn', 'hàn',
        'hen', 'hēn', 'hén', 'hěn', 'hèn',
        'hang', 'hāng', 'háng', 'hǎng', 'hàng',
        'heng', 'hēng', 'héng', 'hěng', 'hèng',
        'hong', 'hōng', 'hóng', 'hǒng', 'hòng',
        'hu', 'hū', 'hú', 'hǔ', 'hù',
        'hua', 'huā', 'huá', 'huǎ', 'huà',
        'huo', 'huō', 'huó', 'huǒ', 'huò',
        'huai', 'huāi', 'huái', 'huǎi', 'huài',
        'huan', 'huān', 'huán', 'huǎn', 'huàn',
        'hun', 'hūn', 'hún', 'hǔn', 'hùn',
        'huang', 'huāng', 'huáng', 'huǎng', 'huàng',
        'hui', 'huī', 'huí', 'huǐ', 'huì',
        
        // J
        'ji', 'jī', 'jí', 'jǐ', 'jì',
        'jia', 'jiā', 'jiá', 'jiǎ', 'jià',
        'jie', 'jiē', 'jié', 'jiě', 'jiè',
        'jiao', 'jiāo', 'jiáo', 'jiǎo', 'jiào',
        'jiu', 'jiū', 'jiú', 'jiǔ', 'jiù',
        'jian', 'jiān', 'jián', 'jiǎn', 'jiàn',
        'jin', 'jīn', 'jín', 'jǐn', 'jìn',
        'jiang', 'jiāng', 'jiáng', 'jiǎng', 'jiàng',
        'jing', 'jīng', 'jíng', 'jǐng', 'jìng',
        'jiong', 'jiōng', 'jióng', 'jiǒng', 'jiòng',
        'ju', 'jū', 'jú', 'jǔ', 'jù',
        'juan', 'juān', 'juán', 'juǎn', 'juàn',
        'jun', 'jūn', 'jún', 'jǔn', 'jùn',
        'jue', 'juē', 'jué', 'juě', 'juè',
        
        // K
        'ka', 'kā', 'ká', 'kǎ', 'kà',
        'ke', 'kē', 'ké', 'kě', 'kè',
        'kai', 'kāi', 'kái', 'kǎi', 'kài',
        'kao', 'kāo', 'káo', 'kǎo', 'kào',
        'kou', 'kōu', 'kóu', 'kǒu', 'kòu',
        'kan', 'kān', 'kán', 'kǎn', 'kàn',
        'ken', 'kēn', 'kén', 'kěn', 'kèn',
        'kang', 'kāng', 'káng', 'kǎng', 'kàng',
        'keng', 'kēng', 'kéng', 'kěng', 'kèng',
        'kong', 'kōng', 'kóng', 'kǒng', 'kòng',
        'ku', 'kū', 'kú', 'kǔ', 'kù',
        'kua', 'kuā', 'kuá', 'kuǎ', 'kuà',
        'kuo', 'kuō', 'kuó', 'kuǒ', 'kuò',
        'kuai', 'kuāi', 'kuái', 'kuǎi', 'kuài',
        'kuan', 'kuān', 'kuán', 'kuǎn', 'kuàn',
        'kun', 'kūn', 'kún', 'kǔn', 'kùn',
        'kuang', 'kuāng', 'kuáng', 'kuǎng', 'kuàng',
        'kui', 'kuī', 'kuí', 'kuǐ', 'kuì',
        
        // L
        'la', 'lā', 'lá', 'lǎ', 'là',
        'le', 'lē', 'lé', 'lě', 'lè',
        'lai', 'lāi', 'lái', 'lǎi', 'lài',
        'lao', 'lāo', 'láo', 'lǎo', 'lào',
        'lou', 'lōu', 'lóu', 'lǒu', 'lòu',
        'lan', 'lān', 'lán', 'lǎn', 'làn',
        'lang', 'lāng', 'láng', 'lǎng', 'làng',
        'leng', 'lēng', 'léng', 'lěng', 'lèng',
        'li', 'lī', 'lí', 'lǐ', 'lì',
        'lia', 'liā', 'liá', 'liǎ', 'lià',
        'lie', 'liē', 'lié', 'liě', 'liè',
        'liao', 'liāo', 'liáo', 'liǎo', 'liào',
        'liu', 'liū', 'liú', 'liǔ', 'liù',
        'lian', 'liān', 'lián', 'liǎn', 'liàn',
        'lin', 'līn', 'lín', 'lǐn', 'lìn',
        'liang', 'liāng', 'liáng', 'liǎng', 'liàng',
        'ling', 'līng', 'líng', 'lǐng', 'lìng',
        'long', 'lōng', 'lóng', 'lǒng', 'lòng',
        'lu', 'lū', 'lú', 'lǔ', 'lù',
        'luo', 'luō', 'luó', 'luǒ', 'luò',
        'luan', 'luān', 'luán', 'luǎn', 'luàn',
        'lun', 'lūn', 'lún', 'lǔn', 'lùn',
        'luo', 'luō', 'luó', 'luǒ', 'luò',
        'lve', 'lüe', 'lve', 'lve', 'lve',
        'lue', 'lüe', 'lüe', 'lüe', 'lüe',
        
        // M
        'ma', 'mā', 'má', 'mǎ', 'mà',
        'me', 'mē', 'mé', 'mě', 'mè',
        'mai', 'māi', 'mái', 'mǎi', 'mài',
        'mao', 'māo', 'máo', 'mǎo', 'mào',
        'mou', 'mōu', 'móu', 'mǒu', 'mòu',
        'man', 'mān', 'mán', 'mǎn', 'màn',
        'men', 'mēn', 'mén', 'měn', 'mèn',
        'mang', 'māng', 'máng', 'mǎng', 'màng',
        'meng', 'mēng', 'méng', 'měng', 'mèng',
        'mi', 'mī', 'mí', 'mǐ', 'mì',
        'mie', 'miē', 'mié', 'miě', 'miè',
        'miao', 'miāo', 'miáo', 'miǎo', 'miào',
        'miu', 'miū', 'miú', 'miǔ', 'miù',
        'mian', 'miān', 'mián', 'miǎn', 'miàn',
        'min', 'mīn', 'mín', 'mǐn', 'mìn',
        'ming', 'mīng', 'míng', 'mǐng', 'mìng',
        'mong', 'mōng', 'méng', 'mǒng', 'mòng',
        'mu', 'mū', 'mú', 'mǔ', 'mù',
        
        // N
        'n', 'nā', 'ná', 'nǎ', 'nà',
        'ne', 'nē', 'né', 'ně', 'nè',
        'nai', 'nāi', 'nái', 'nǎi', 'nài',
        'nao', 'nāo', 'náo', 'nǎo', 'nào',
        'nou', 'nōu', 'nóu', 'nǒu', 'nòu',
        'nan', 'nān', 'nán', 'nǎn', 'nàn',
        'nen', 'nēn', 'nén', 'něn', 'nèn',
        'nang', 'nāng', 'náng', 'nǎng', 'nàng',
        'neng', 'nēng', 'néng', 'něng', 'nèng',
        'ni', 'nī', 'ní', 'nǐ', 'nì',
        'nia', 'niā', 'niá', 'niǎ', 'nià',
        'nie', 'niē', 'nié', 'niě', 'niè',
        'niao', 'niāo', 'niáo', 'niǎo', 'niào',
        'niu', 'niū', 'niú', 'niǔ', 'niù',
        'nian', 'niān', 'nián', 'niǎn', 'niàn',
        'nin', 'nīn', 'nín', 'nǐn', 'nìn',
        'niang', 'niāng', 'niáng', 'niǎng', 'niàng',
        'ning', 'nīng', 'níng', 'nǐng', 'nìng',
        'nong', 'nōng', 'nóng', 'nǒng', 'nòng',
        'nu', 'nū', 'nú', 'nǔ', 'nù',
        'nuo', 'nuō', 'nuó', 'nuǒ', 'nuò',
        'nuan', 'nuān', 'nuán', 'nuǎn', 'nuàn',
        'nun', 'nūn', 'nún', 'nǔn', 'nùn',
        'nve', 'nve', 'nve', 'nve', 'nve',
        'nue', 'nue', 'nue', 'nue', 'nue',
        
        // O
        'o', 'ō', 'ó', 'ǒ', 'ò',
        'ou', 'ōu', 'óu', 'ǒu', 'òu',
        'ong', 'ōng', 'óng', 'ǒng', 'òng',
        
        // P
        'pa', 'pā', 'pá', 'pǎ', 'pà',
        'po', 'pō', 'pó', 'pǒ', 'pò',
        'pai', 'pāi', 'pái', 'pǎi', 'pài',
        'pao', 'pāo', 'páo', 'pǎo', 'pào',
        'pou', 'pōu', 'póu', 'pǒu', 'pòu',
        'pan', 'pān', 'pán', 'pǎn', 'pàn',
        'pen', 'pēn', 'pén', 'pěn', 'pèn',
        'pang', 'pāng', 'páng', 'pǎng', 'pàng',
        'peng', 'pēng', 'péng', 'pěng', 'pèng',
        'pi', 'pī', 'pí', 'pǐ', 'pì',
        'pie', 'piē', 'pié', 'piě', 'piè',
        'piao', 'piāo', 'piáo', 'piǎo', 'piào',
        'pian', 'piān', 'pián', 'piǎn', 'piàn',
        'pin', 'pīn', 'pín', 'pǐn', 'pìn',
        'ping', 'pīng', 'píng', 'pǐng', 'pìng',
        'pong', 'pōng', 'péng', 'pǒng', 'pòng',
        'pu', 'pū', 'pú', 'pǔ', 'pù',
        
        // Q
        'qi', 'qī', 'qí', 'qǐ', 'qì',
        'qia', 'qiā', 'qiá', 'qiǎ', 'qià',
        'qie', 'qiē', 'qié', 'qiě', 'qiè',
        'qiao', 'qiāo', 'qiáo', 'qiǎo', 'qiào',
        'qiu', 'qiū', 'qiú', 'qiǔ', 'qiù',
        'qian', 'qiān', 'qián', 'qiǎn', 'qiàn',
        'qin', 'qīn', 'qín', 'qǐn', 'qìn',
        'qiang', 'qiāng', 'qiáng', 'qiǎng', 'qiàng',
        'qing', 'qīng', 'qíng', 'qǐng', 'qìng',
        'qiong', 'qiōng', 'qióng', 'qiǒng', 'qiòng',
        'qu', 'qū', 'qú', 'qǔ', 'qù',
        'quan', 'quān', 'quán', 'quǎn', 'quàn',
        'qun', 'qūn', 'qún', 'qǔn', 'qùn',
        'que', 'quē', 'qué', 'quě', 'què',
        
        // R
        'ran', 'rān', 'rán', 'rǎn', 'ràn',
        'ren', 'rén', 'rén', 'rěn', 'rèn',
        'rang', 'rāng', 'ráng', 'rǎng', 'ràng',
        'reng', 'rēng', 'réng', 'rěng', 'rèng',
        'ri', 'rì', 'rí', 'rǐ', 'rì',
        'rong', 'róng', 'róng', 'rǒng', 'ròng',
        'ru', 'rú', 'rú', 'rǔ', 'rù',
        'rua', 'ruā', 'ruá', 'ruǎ', 'ruà',
        'ruo', 'ruò', 'ruó', 'ruǒ', 'ruò',
        'ruan', 'ruān', 'ruán', 'ruǎn', 'ruàn',
        'rui', 'ruì', 'ruí', 'ruǐ', 'ruì',
        'run', 'rūn', 'rún', 'rǔn', 'rùn',
        'ruo', 'ruò', 'ruó', 'ruǒ', 'ruò',
        
        // S
        'sa', 'sā', 'sá', 'sǎ', 'sà',
        'se', 'sè', 'sé', 'sě', 'sè',
        'sai', 'sāi', 'sái', 'sǎi', 'sài',
        'sao', 'sāo', 'sáo', 'sǎo', 'sào',
        'sou', 'sōu', 'sóu', 'sǒu', 'sòu',
        'san', 'sān', 'sán', 'sǎn', 'sàn',
        'sen', 'sēn', 'sén', 'sěn', 'sèn',
        'sang', 'sāng', 'sáng', 'sǎng', 'sàng',
        'seng', 'sēng', 'séng', 'sěng', 'sèng',
        'si', 'sī', 'sí', 'sǐ', 'sì',
        'song', 'sōng', 'sóng', 'sǒng', 'sòng',
        'su', 'sū', 'sú', 'sǔ', 'sù',
        'sui', 'suī', 'suí', 'suǐ', 'suì',
        'suan', 'suān', 'suán', 'suǎn', 'suàn',
        'sun', 'sūn', 'sún', 'sǔn', 'sùn',
        'suo', 'suǒ', 'suó', 'suǒ', 'suò',
        'sha', 'shā', 'shá', 'shǎ', 'shà',
        'she', 'shē', 'shé', 'shě', 'shè',
        'shai', 'shāi', 'shái', 'shǎi', 'shài',
        'shei', 'shēi', 'shéi', 'shěi', 'shèi',
        'shao', 'shāo', 'sháo', 'shǎo', 'shào',
        'shou', 'shōu', 'shóu', 'shǒu', 'shòu',
        'shan', 'shān', 'shán', 'shǎn', 'shàn',
        'shen', 'shēn', 'shén', 'shěn', 'shèn',
        'shang', 'shāng', 'sháng', 'shǎng', 'shàng',
        'sheng', 'shēng', 'shéng', 'shěng', 'shèng',
        'shi', 'shī', 'shí', 'shǐ', 'shì',
        'shong', 'shōng', 'shóng', 'shǒng', 'shòng',
        'shu', 'shū', 'shú', 'shǔ', 'shù',
        'shua', 'shuā', 'shuá', 'shuǎ', 'shuà',
        'shuo', 'shuō', 'shuó', 'shuǒ', 'shuò',
        'shuai', 'shuāi', 'shuái', 'shuǎi', 'shuài',
        'shuan', 'shuān', 'shuán', 'shuǎн', 'shuàn',
        'shun', 'shūn', 'shún', 'shǔn', 'shùn',
        'shuang', 'shuāng', 'shuáng', 'shuǎng', 'shuàng',
        'shui', 'shuī', 'shuí', 'shuǐ', 'shuì',
        'shuo', 'shuō', 'shuó', 'shuǒ', 'shuò',
        
        // T
        'ta', 'tā', 'tá', 'tǎ', 'tà',
        'te', 'tè', 'té', 'tě', 'tè',
        'tai', 'tāi', 'tái', 'tǎi', 'tài',
        'tao', 'tāo', 'táo', 'tǎo', 'tào',
        'tou', 'tōu', 'tóu', 'tǒu', 'tòu',
        'tan', 'tān', 'tán', 'tǎн', 'tàn',
        'tang', 'tāng', 'táng', 'tǎng', 'tàng',
        'teng', 'tēng', 'téng', 'těng', 'tèng',
        'ti', 'tī', 'tí', 'tǐ', 'tì',
        'tie', 'tiē', 'tié', 'tiě', 'tiè',
        'tiao', 'tiāo', 'tiáo', 'tiǎo', 'tiào',
        'tian', 'tiān', 'tián', 'tiǎn', 'tiàn',
        'ting', 'tīng', 'tíng', 'tǐng', 'tìng',
        'tong', 'tōng', 'tóng', 'tǒng', 'tòng',
        'tu', 'tū', 'tú', 'tǔ', 'tù',
        'tuo', 'tuō', 'tuó', 'tuǒ', 'tuò',
        'tuan', 'tuān', 'tuán', 'tuǎn', 'tuàn',
        'tun', 'tūn', 'tún', 'tǔn', 'tùn',
        'tui', 'tuī', 'tuí', 'tuǐ', 'tuì',
        
        // W
        'wa', 'wā', 'wá', 'wǎ', 'wà',
        'wo', 'wō', 'wó', 'wǒ', 'wò',
        'wai', 'wāi', 'wái', 'wǎi', 'wài',
        'wei', 'wēi', 'wéi', 'wěi', 'wèi',
        'wan', 'wān', 'wán', 'wǎn', 'wàn',
        'wen', 'wēn', 'wén', 'wěn', 'wèn',
        'wang', 'wāng', 'wáng', 'wǎng', 'wàng',
        'weng', 'wēng', 'wéng', 'wěng', 'wèng',
        'wu', 'wū', 'wú', 'wǔ', 'wù',
        
        // X
        'xi', 'xī', 'xí', 'xǐ', 'xì',
        'xia', 'xiā', 'xiá', 'xiǎ', 'xià',
        'xie', 'xiē', 'xié', 'xiě', 'xiè',
        'xiao', 'xiāo', 'xiáo', 'xiǎo', 'xiào',
        'xiu', 'xiū', 'xiú', 'xiǔ', 'xiù',
        'xian', 'xiān', 'xián', 'xiǎn', 'xiàn',
        'xin', 'xīn', 'xín', 'xǐn', 'xìn',
        'xiang', 'xiāng', 'xiáng', 'xiǎng', 'xiàng',
        'xing', 'xīng', 'xíng', 'xǐng', 'xìng',
        'xiong', 'xiōng', 'xióng', 'xiǒng', 'xiòng',
        'xu', 'xū', 'xú', 'xǔ', 'xù',
        'xuan', 'xuān', 'xuán', 'xuǎn', 'xuàn',
        'xun', 'xūn', 'xún', 'xǔn', 'xùn',
        'xue', 'xuē', 'xué', 'xuě', 'xuè',
        
        // Y
        'ya', 'yā', 'yá', 'yǎ', 'yà',
        'yo', 'yō', 'yó', 'yǒ', 'yò',
        'ye', 'yē', 'yé', 'yě', 'yè',
        'yai', 'yāi', 'yái', 'yǎi', 'yài',
        'yao', 'yāo', 'yáo', 'yǎo', 'yào',
        'you', 'yōu', 'yóu', 'yǒu', 'yòu',
        'yan', 'yān', 'yán', 'yǎn', 'yàn',
        'yang', 'yāng', 'yáng', 'yǎng', 'yàng',
        'yeng', 'yēng', 'yéng', 'yěng', 'yèng',
        'yi', 'yī', 'yí', 'yǐ', 'yì',
        'yin', 'yīn', 'yín', 'yǐn', 'yìn',
        'ying', 'yīng', 'yíng', 'yǐng', 'yìng',
        'yong', 'yōng', 'yóng', 'yǒng', 'yòng',
        'yu', 'yū', 'yú', 'yǔ', 'yù',
        'yuan', 'yuān', 'yuán', 'yuǎn', 'yuàn',
        'yun', 'yūn', 'yún', 'yǔn', 'yùn',
        'yue', 'yuē', 'yué', 'yuě', 'yuè',
        
        // Z
        'za', 'zā', 'zá', 'zǎ', 'zà',
        'ze', 'zé', 'zé', 'zě', 'zè',
        'zai', 'zāi', 'zái', 'zǎi', 'zài',
        'zao', 'zāo', 'záo', 'zǎo', 'zào',
        'zou', 'zōu', 'zóu', 'zǒu', 'zòu',
        'zan', 'zān', 'zán', 'zǎn', 'zàn',
        'zen', 'zēn', 'zén', 'zěn', 'zèn',
        'zang', 'zāng', 'záng', 'zǎng', 'zàng',
        'zeng', 'zēng', 'zéng', 'zěng', 'zèng',
        'zi', 'zī', 'zí', 'zǐ', 'zì',
        'zong', 'zōng', 'zóng', 'zǒng', 'zòng',
        'zu', 'zū', 'zú', 'zǔ', 'zù',
        'zui', 'zuī', 'zuí', 'zuǐ', 'zuì',
        'zuan', 'zuān', 'zuán', 'zuǎn', 'zuàn',
        'zun', 'zūn', 'zún', 'zǔn', 'zùn',
        'zuo', 'zuǒ', 'zuó', 'zuǒ', 'zuò',
        'zha', 'zhā', 'zhá', 'zhǎ', 'zhà',
        'zhe', 'zhē', 'zhé', 'zhě', 'zhè',
        'zhai', 'zhāi', 'zhái', 'zhǎi', 'zhài',
        'zhao', 'zhāo', 'zháo', 'zhǎo', 'zhào',
        'zhou', 'zhōu', 'zhóu', 'zhǒu', 'zhòu',
        'zhan', 'zhān', 'zhán', 'zhǎn', 'zhàn',
        'zhen', 'zhēn', 'zhén', 'zhěn', 'zhèn',
        'zhang', 'zhāng', 'zháng', 'zhǎng', 'zhàng',
        'zheng', 'zhēng', 'zhéng', 'zhěng', 'zhèng',
        'zhi', 'zhī', 'zhí', 'zhǐ', 'zhì',
        'zhong', 'zhōng', 'zhóng', 'zhǒng', 'zhòng',
        'zhu', 'zhū', 'zhú', 'zhǔ', 'zhù',
        'zhua', 'zhuā', 'zhuá', 'zhuǎ', 'zhuà',
        'zhuo', 'zhuō', 'zhuó', 'zhuǒ', 'zhuò',
        'zhuai', 'zhuāi', 'zhuái', 'zhuǎi', 'zhuài',
        'zhuan', 'zhuān', 'zhuán', 'zhuǎn', 'zhuàn',
        'zhun', 'zhūn', 'zhún', 'zhǔn', 'zhùn',
        'zhuang', 'zhuāng', 'zhuáng', 'zhuǎng', 'zhuàng',
        'zhui', 'zhuī', 'zhuí', 'zhuǐ', 'zhuì',
        
        // 可以根据需要继续添加更多拼音
        );
    }
    
    /**
     * 渲染汉字相关的发音含义对元框
     */
    public function render_character_pronunciations_meta_box($post) {
        // 获取与当前汉字关联的所有发音含义对
        $pronunciations = get_posts(array(
            'post_type' => 'pronunciation_pair',
            'post_status' => 'any',
            'numberposts' => -1,
            'meta_query' => array(
                array(
                    'key' => '_pronunciation_related_character',
                    'value' => $post->ID,
                    'compare' => '='
                )
            )
        ));
        
        echo '<p>此汉字的所有发音和含义：</p>';
        
        if (!empty($pronunciations)) {
            echo '<ul>';
            foreach ($pronunciations as $pronunciation) {
                echo '<li>';
                echo '<a href="' . get_edit_post_link($pronunciation->ID) . '">' . $pronunciation->post_title . '</a>';
                $pinyin = get_post_meta($pronunciation->ID, '_pronunciation_pinyin', true);
                if ($pinyin) {
                    echo ' (' . esc_html($pinyin) . ')';
                }
                echo '</li>';
            }
            echo '</ul>';
        } else {
            echo '<p>暂无发音含义对。</p>';
        }
        
        // 添加一个按钮，可以直接创建并关联到当前汉字的发音含义对
        echo '<p><a class="button button-primary" href="' . admin_url('post-new.php?post_type=pronunciation_pair&related_character=' . $post->ID) . '">添加发音含义对</a></p>';
    }
    
    /**
     * 保存元数据
     */
    public function save_pronunciation_meta($post_id) {
        // 检查是否是自动保存
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
            return;
        }
        
        // 检查nonce
        if (!isset($_POST['pronunciation_meta_nonce']) || !wp_verify_nonce($_POST['pronunciation_meta_nonce'], 'save_pronunciation_meta')) {
            return;
        }
        
        // 检查用户权限
        if (!current_user_can('edit_post', $post_id)) {
            return;
        }
        
        // 检查文章类型
        if (get_post_type($post_id) !== 'pronunciation_pair') {
            return;
        }
        
        // 处理拼音字段
        $pinyin = '';
        if (!empty($_POST['pronunciation_pinyin']) && is_array($_POST['pronunciation_pinyin'])) {
            // 过滤并清理选中的拼音值
            $selected_pinyins = array_map('sanitize_text_field', $_POST['pronunciation_pinyin']);
            // 用空格连接拼音
            $pinyin = implode(' ', $selected_pinyins);
        } elseif (!empty($_POST['pronunciation_pinyin_custom'])) {
            $pinyin = sanitize_text_field($_POST['pronunciation_pinyin_custom']);
        }
        
        // 保存字段
        update_post_meta($post_id, '_pronunciation_pinyin', $pinyin);
        update_post_meta($post_id, '_pronunciation_part_of_speech', sanitize_text_field($_POST['pronunciation_part_of_speech']));
        update_post_meta($post_id, '_pronunciation_related_character', sanitize_text_field($_POST['pronunciation_related_character']));
        update_post_meta($post_id, '_pronunciation_examples', sanitize_textarea_field($_POST['pronunciation_examples']));
    }
    
    /**
     * 加载后台脚本
     */
    public function admin_scripts($hook) {
        global $post_type;
        
        if ($hook == 'post-new.php' || $hook == 'post.php') {
            if ($post_type === 'pronunciation_pair') {
                // 加载Select2 CSS
                wp_enqueue_style(
                    'pronunciation-select2-css',
                    'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css'
                );
                
                // 加载Select2 JS
                wp_enqueue_script(
                    'pronunciation-select2-js',
                    'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js',
                    array('jquery'),
                    '4.0.13',
                    true
                );
                
                // 加载自定义JS
                wp_enqueue_script(
                    'pronunciation-admin-js', 
                    plugin_dir_url(dirname(__FILE__)) . 'assets/admin.js', 
                    array('jquery', 'pronunciation-select2-js'), 
                    '1.0.0', 
                    true
                );
            }
        }
    }
}

// 初始化类
new PronunciationMeaningPairs();