# 自定义拼音和部首列表

汉字字典插件允许您自定义拼音和部首列表，以满足特定需求。通过使用WordPress的过滤器钩子，您可以轻松扩展或修改默认的拼音和部首列表。

## 拼音列表组织方式

拼音列表已按照字典索引方式组织，按字母A-Z顺序排列，并在下拉菜单中按首字母分组显示，方便查找。

## 部首列表组织方式

部首列表已按照笔画数分组显示，从1画到5画，符合传统字典的部首排列方式。

## 自定义拼音列表

要自定义拼音列表，您可以在当前主题的 `functions.php` 文件中添加以下代码：

### 添加自定义拼音到列表中

```php
// 添加自定义拼音到列表中
function customize_character_pinyin_list($pinyin_list) {
    // 添加新的拼音
    $pinyin_list[] = 'xin';  // 添加拼音"xin"
    $pinyin_list[] = 'xīn';  // 添加带声调的拼音"xīn"
    
    // 或者完全替换列表
    // $pinyin_list = array('a', 'o', 'e', 'xin', 'xīn');
    
    // 或者移除某些拼音
    // if (($key = array_search('bu', $pinyin_list)) !== false) {
    //     unset($pinyin_list[$key]);
    // }
    
    // 按字母顺序重新排序
    sort($pinyin_list);
    
    return $pinyin_list;
}
add_filter('chinese_character_pinyin_list', 'customize_character_pinyin_list');
```

### 批量添加拼音

```php
// 批量添加拼音
function add_multiple_pinyin($pinyin_list) {
    // 添加一些新的拼音
    $new_pinyin = array(
        'fēn', 'fén', 'fěn', 'fèn',  // fen的四种声调
        'lù', 'lú', 'lǔ', 'lù',      // lu的四种声调
        'zàng', 'záng', 'zǎng', 'zàng' // zang的四种声调
    );
    
    // 合并到现有列表中
    $pinyin_list = array_merge($pinyin_list, $new_pinyin);
    
    // 按字母顺序重新排序
    sort($pinyin_list);
    
    return $pinyin_list;
}
add_filter('chinese_character_pinyin_list', 'add_multiple_pinyin');
```

## 自定义部首列表

要自定义部首列表，您可以在当前主题的 `functions.php` 文件中添加以下代码：

### 添加自定义部首到列表中

```php
// 添加自定义部首到列表中
function customize_character_radical_list($radical_list) {
    // 添加新的部首
    $radical_list[] = '新部首';
    
    // 或者完全替换列表
    // $radical_list = array('一', '丨', '丶', '新部首');
    
    // 或者移除某些部首
    // if (($key = array_search('乙', $radical_list)) !== false) {
    //     unset($radical_list[$key]);
    // }
    
    return $radical_list;
}
add_filter('chinese_character_radical_list', 'customize_character_radical_list');
```

### 批量添加部首

```php
// 批量添加部首
function add_multiple_radicals($radical_list) {
    // 添加一些新的部首
    $new_radicals = array(
        '新部首1',
        '新部首2',
        '自定义部首'
    );
    
    // 合并到现有列表中
    $radical_list = array_merge($radical_list, $new_radicals);
    
    return $radical_list;
}
add_filter('chinese_character_radical_list', 'add_multiple_radicals');
```

## 高级自定义选项

### 创建完全自定义的拼音列表

```php
// 创建完全自定义的拼音列表
function create_custom_pinyin_list($pinyin_list) {
    // 完全替换默认列表
    $custom_pinyin_list = 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à',
        'bai', 'bāi', 'bái', 'bǎi', 'bài',
        'ban', 'bān', 'bán', 'bǎn', 'bàn',
        // ... 可以继续添加更多
        
        // 自定义拼音
        ' customized_pinyin', // 添加您的自定义拼音
    );
    
    return $custom_pinyin_list;
}
// 使用优先级100确保最后应用
add_filter('chinese_character_pinyin_list', 'create_custom_pinyin_list', 100);
```

### 创建完全自定义的部首列表

```php
// 创建完全自定义的部首列表
function create_custom_radical_list($radical_list) {
    // 完全替换默认列表
    $custom_radical_list = array(
        // 1画
        '一', '丨', '丶', '丿', '乙', '亅',
        
        // 2画
        '二', '亠', '人', '儿', '入', '八',
        // ... 可以继续添加更多
        
        // 自定义部首
        '自定义部首', // 添加您的自定义部首
    );
    
    return $custom_radical_list;
}
// 使用优先级100确保最后应用
add_filter('chinese_character_radical_list', 'create_custom_radical_list', 100);
```

## 动态添加拼音和部首

如果您需要根据某些条件动态添加拼音或部首，可以使用以下方法：

```php
// 根据条件动态添加拼音
function conditional_pinyin_addition($pinyin_list) {
    // 检查某个条件
    if (get_option('add_extra_pinyin', false)) {
        $pinyin_list[] = 'extra_pinyin';
        $pinyin_list[] = 'ēxtrā_pīnyīn';
    }
    
    // 排序确保字母顺序
    sort($pinyin_list);
    
    return $pinyin_list;
}
add_filter('chinese_character_pinyin_list', 'conditional_pinyin_addition');

// 根据条件动态添加部首
function conditional_radical_addition($radical_list) {
    // 检查某个条件
    if (get_option('add_extra_radicals', false)) {
        $radical_list[] = '额外部首';
    }
    
    return $radical_list;
}
add_filter('chinese_character_radical_list', 'conditional_radical_addition');
```

## 从外部源加载拼音和部首

如果您想从外部源（如数据库、API等）加载拼音和部首列表，可以使用以下方法：

```php
// 从数据库加载自定义拼音
function load_pinyin_from_database($pinyin_list) {
    // 示例：从自定义数据库表加载拼音
    global $wpdb;
    $custom_pinyin = $wpdb->get_col("SELECT pinyin FROM {$wpdb->prefix}custom_pinyin_table");
    
    // 合并到现有列表
    if (!empty($custom_pinyin)) {
        $pinyin_list = array_merge($pinyin_list, $custom_pinyin);
        sort($pinyin_list); // 重新排序
    }
    
    return $pinyin_list;
}
add_filter('chinese_character_pinyin_list', 'load_pinyin_from_database');

// 从选项加载自定义部首
function load_radicals_from_options($radical_list) {
    // 从WordPress选项加载自定义部首
    $custom_radicals = get_option('custom_radicals', array());
    
    // 合并到现有列表
    if (!empty($custom_radicals)) {
        $radical_list = array_merge($radical_list, $custom_radicals);
    }
    
    return $radical_list;
}
add_filter('chinese_character_radical_list', 'load_radicals_from_options');
```

## 注意事项

1. 添加的拼音和部首会自动出现在后台编辑页面的下拉选择框中
2. 拼音列表会按照字母顺序在下拉框中分组显示
3. 部首列表会按照笔画数分组显示
4. 自定义的代码应该添加到主题的 `functions.php` 文件中，以确保在插件更新时不会丢失
5. 建议使用子主题来添加这些自定义代码，以防止主题更新时代码丢失
6. 如果您对拼音列表进行了大量自定义，建议使用 `sort()` 函数确保按字母顺序排列
7. 过滤器钩子的优先级默认为10，如果您需要确保自定义代码最后执行，可以使用更高的优先级（如100）
8. 为了保持兼容性，请确保返回的数组结构与原始列表一致