如何不使用插件及自定义字段为WordPress自定义文章添加价格数值字段
WordPress房源插件自定义数值价格字段实现方案
直接在你的插件核心代码中添加以下三段逻辑即可实现你要的效果,无需依赖额外插件,也不需要手动在后台创建自定义字段:
- 注册价格字段元框
将以下代码加入插件文件,在房源(对应你自己注册的文章类型别名,示例中为house_listing,请自行替换为你插件里的房源文章类型别名)的编辑页挂载价格输入区块:
add_action( 'add_meta_boxes', 'add_house_price_metabox' ); function add_house_price_metabox() { add_meta_box( 'house_price_metabox', '房源价格', 'render_house_price_input', 'house_listing', // 替换为你自己的房源文章类型别名 'side', // 展示位置:侧边栏,也可以设为normal放在编辑区主内容下方 'default' ); }
- 渲染价格输入框
回调函数实现数值输入框的展示,自带数值类型限制,匹配你要的效果样式:
function render_house_price_input( $post ) { // 安全校验nonce wp_nonce_field( 'save_house_price_nonce', 'house_price_nonce' ); // 获取已保存的价格 $price = get_post_meta( $post->ID, 'house_price', true ); ?> <p> <label for="house_price">售价</label> <input type="number" id="house_price" name="house_price" value="<?php echo esc_attr( $price ); ?>" min="0" step="0.01" style="width:120px;margin:0 8px;" /> <span>万元</span> </p> <?php }
- 保存价格数据
添加提交文章时的保存逻辑,自动把数值存入数据库:
add_action( 'save_post', 'save_house_price' ); function save_house_price( $post_id ) { // 校验nonce是否合法 if ( ! isset( $_POST['house_price_nonce'] ) || ! wp_verify_nonce( $_POST['house_price_nonce'], 'save_house_price_nonce' ) ) { return; } // 校验用户权限 if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } // 自动保存状态下不处理 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } // 保存数值 if ( isset( $_POST['house_price'] ) ) { update_post_meta( $post_id, 'house_price', sanitize_text_field( $_POST['house_price'] ) ); } }
实现效果如下:
前端需要调用价格的时候,直接使用代码get_post_meta( 文章ID, 'house_price', true )获取对应房源的价格数值即可。
内容的提问来源于stack exchange,提问作者Abdul Rehman
相关产品推荐
相关产品推荐

