WordPress 添加Meta Box的方法

2019-02-19 14:33:37王振洲
这里我们在$types数组中定义了Post和Page都需要推荐指数这个自定义字段,然后告诉WordPress使用“render_rating_meta_box”方法来渲染Meta Box,位置在侧边栏(side)。因为内容不多,所以侧边栏足够,若内容较多,可以将“side”改为“advanced”,这样就会在主内容区域渲染Meta Box。

接下来看看是如何渲染的
PHP Code复制内容到剪贴板
  1. function render_rating_meta_box( $post ) {        // 添加 nonce 项用于后续的安全检查   
  2.     wp_nonce_field( 'rating_nonce_action', 'rating_nonce_name' );      
  3.     // 获取推荐指数的值        $rating_key = 'rating';   
  4.     $rating_value = get_post_meta( $post->ID, $rating_key, true );        $rating_value = (int)$rating_value;   
  5.        $html = '<select name="rating_field">';   
  6.     for ($i = 0; $i <= 10; $i++) {            $selected = '';   
  7.         if ($i == $rating_value) {                $selected = 'selected="selected"';   
  8.         }            $html .= sprintf('<option value="%s" %s>%s星</option>', $i, $selected, $i/2);   
  9.     }        $html .= '</select>';   
  10.     echo $html;    }  

这里先使用wp_nonce_field()添加了一个nonce field,用来做安全检查,然后,读取推荐指数的值,循环1~10来输出可供选择的值,如果和推荐指数相同,则默认选上。通过下拉框,既可以解决输入不方便和无法验证的问题。记住这里下拉框的name属性的值(rating_field),将通过它在下面的代码中获取选择的值。

最后,当文章被保存时,需要将推荐指数也保存起来
PHP Code复制内容到剪贴板