WordPress多复选框元框:如何显示对应文本而非存储键值
解决方法
1. 抽离可复用的选项数组
把复选框的选项数组单独封装成函数,避免元框和前端输出代码重复,同时保证文本一致性:
// 定义专业领域选项数组(可复用) function get_expertise_options() { return array( 'design_research' => pll__('Design research'), 'product_design' => pll__('Product design'), '3d_modelling' => pll__('3D modelling'), 'engineering' => pll__('Engineering'), 'dfm' => pll__('Design for manufacturing'), 'prototyping' => pll__('Prototyping'), 'production' => pll__('Production') ); }
然后修改元框回调函数,替换原有的数组定义:
function expertise_checkbox_meta_box_callback( $post, $meta ){ $screens = $meta['args']; wp_nonce_field( plugin_basename(__FILE__), 'expertise_checkbox_field_noncename' ); $value = maybe_unserialize(get_post_meta( $post->ID, 'expertise_checkbox_elements', true )); // 调用复用的选项数组 $expertise_checkbox_elements = get_expertise_options(); foreach ( $expertise_checkbox_elements as $id => $element ) { $checked = ( is_array( $value ) && in_array( $id, $value ) ) ? 'checked="checked"' : ''; ?> <p> <input type="checkbox" name="multval[]" value="<?php echo esc_attr($id);?>" <?php echo $checked; ?> /> <?php echo esc_html($element);?> <br> </p> <?php } }
2. 修改前端输出代码
通过保存的键名,从复用数组中匹配对应的显示文本输出:
<?php $saved_expertise = get_post_meta( $post->ID, 'expertise_checkbox_elements', true ); // 确保是有效数组再输出 if ( is_array( $saved_expertise ) && !empty( $saved_expertise ) ) { $expertise_options = get_expertise_options(); echo '<ul>'; foreach ( $saved_expertise as $key ) { // 过滤无效键名,避免错误输出 if ( isset( $expertise_options[$key] ) ) { echo '<li>' . esc_html( $expertise_options[$key] ) . '</li>'; } } echo '</ul>'; } ?>
内容的提问来源于stack exchange,提问作者Nikita Pelevin
相关产品推荐
相关产品推荐

