<?php

/**
 * 提示:本示例中的 meta box 是一个跟招聘相关的列表,详细内容是关于地址,薪水,工时这一类的信息。
 * 本实例中使用的原代码来自Wordpress官网:https://developer.wordpress.org/reference/functions/add_meta_box/ 的6楼。
 *
 *
 * 下面的代码:在文章编辑页上调用一个类(Class),名称为:set_job_item。
 */
function jobs_item() {
    new set_job_item();
}
 
if ( is_admin() ) {
    add_action( 'load-post.php',     'jobs_item' );
    add_action( 'load-post-new.php', 'jobs_item' );
}
 
/**
 * 定义该类(set_job_item)。即上面要调用的类。
 */
class set_job_item { 
    /**
     * Hook(钩)动作执行。
     */
    public function __construct() {
        add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
        add_action( 'save_post',      array( $this, 'save'         ) );
    }
 
    /**
     * 添加 meta box 容器。
     *
     * 关于add_meta_box的用法:
     * add_meta_box( string $id, string $title, callable $callback, string|array|WP_Screen $screen = null, string $context = 'advanced', string $priority = 'default', array $callback_args = null )
     */
    public function add_meta_box( $post_type ) {
        // 定义在哪里使用该meta box。这里定义的是post,文章页。
        $post_types = array( 'post');
 
        if ( in_array( $post_type, $post_types ) ) {
            add_meta_box(
                'some_meta_box_name', // ID
                __( 'Set the items of this job', 'textdomain' ), // Meta box 标题
                array( $this, 'render_meta_box_content' ), 
                $post_type,
                'advanced',
                'high'
            );
        }
    }
 
    /**
     * 下面的方法是当文章保存的时候,保存meta信息。
     */
    public function save( $post_id ) {
 
        /*
         * 我们需要验证这是来自当前操作的屏幕,        
         * 因为save_post可以在其他地方被触发,例如,这个文章在另外一个浏览器里也在编辑。
         */
 
        // 验证随机数是否被设置
        if ( ! isset( $_POST['myplugin_inner_custom_box_nonce'] ) ) {
            return $post_id;
        }
 
        $nonce = $_POST['myplugin_inner_custom_box_nonce'];
 
        // 验证随机数是否合法
        if ( ! wp_verify_nonce( $nonce, 'myplugin_inner_custom_box' ) ) {
            return $post_id;
        }
 
        /*
         * 如果文章自动保存,什么都不做。
         */
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
            return $post_id;
        }
 
        // 检查用户权限
        if ( 'page' == $_POST['post_type'] ) {
            if ( ! current_user_can( 'edit_page', $post_id ) ) {
                return $post_id;
            }
        } else {
            if ( ! current_user_can( 'edit_post', $post_id ) ) {
                return $post_id;
            }
        }
 
        // 过滤用户的输入内容令其更加安全
        $mydata1 = sanitize_text_field( $_POST['job_item1'] );
		$mydata2 = sanitize_text_field( $_POST['job_item2'] );
		$mydata3 = sanitize_text_field( $_POST['job_item3'] );
		$mydata4 = sanitize_text_field( $_POST['job_item4'] );
		$mydata5 = sanitize_text_field( $_POST['job_item5'] );
		$mydata6 = sanitize_text_field( $_POST['job_item6'] );
		$mydata7 = sanitize_text_field( $_POST['job_item7'] );
		$mydata8 = sanitize_text_field( $_POST['job_item8'] );
 
        // 更新时间发生时,用于更新meta表单
        update_post_meta( $post_id, '_my_meta_value_key1', $mydata1 );
		update_post_meta( $post_id, '_my_meta_value_key2', $mydata2 );
		update_post_meta( $post_id, '_my_meta_value_key3', $mydata3 );
		update_post_meta( $post_id, '_my_meta_value_key4', $mydata4 );
		update_post_meta( $post_id, '_my_meta_value_key5', $mydata5 );
		update_post_meta( $post_id, '_my_meta_value_key6', $mydata6 );
		update_post_meta( $post_id, '_my_meta_value_key7', $mydata7 );
		update_post_meta( $post_id, '_my_meta_value_key8', $mydata8 );
    }
 
 
    /**
     * 渲染meta表单
     */
    public function render_meta_box_content( $post ) {
 
        // 添加随机字段,便于过后检查
        wp_nonce_field( 'myplugin_inner_custom_box', 'myplugin_inner_custom_box_nonce' );
 
        // 用 get_post_meta 返回已存在的数据
        $value1 = get_post_meta( $post->ID, '_my_meta_value_key1', true );
		$value2 = get_post_meta( $post->ID, '_my_meta_value_key2', true );
		$value3 = get_post_meta( $post->ID, '_my_meta_value_key3', true );
		$value4 = get_post_meta( $post->ID, '_my_meta_value_key4', true );
		$value5 = get_post_meta( $post->ID, '_my_meta_value_key5', true );
		$value6 = get_post_meta( $post->ID, '_my_meta_value_key6', true );
		$value7 = get_post_meta( $post->ID, '_my_meta_value_key7', true );
		$value8 = get_post_meta( $post->ID, '_my_meta_value_key8', true );
 
        // 用当前获取的数据填充表单内容
        // 也是在这里创建文章编辑页里看到的meta box
        ?>
    <ul class="job_items_list">
        <li>
            <label for="job_item1">
			<?php _e( '招聘号码', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item1" name="job_item1" value="<?php echo esc_attr( $value1 ); ?>" size="20" />
        </li>

        <li>
            <label for="job_item2">
			<?php _e( '招聘内容', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item2" name="job_item2" value="<?php echo esc_attr( $value2 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item3">
			<?php _e( '薪资报酬', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item3" name="job_item3" value="<?php echo esc_attr( $value3 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item4">
			<?php _e( '交通补助', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item4" name="job_item4" value="<?php echo esc_attr( $value4 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item5">
			<?php _e( '公交地铁', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item5" name="job_item5" value="<?php echo esc_attr( $value5 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item6">
			<?php _e( '工作时间', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item6" name="job_item6" value="<?php echo esc_attr( $value6 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item7">
			<?php _e( '休息时间', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item7" name="job_item7" value="<?php echo esc_attr( $value7 ); ?>" size="50" />
        </li>
        <li>
            <label for="job_item8">
			<?php _e( '其它说明', 'textdomain' ); ?>
		</label>
            <input type="text" id="job_item8" name="job_item8" value="<?php echo esc_attr( $value8 ); ?>" size="50" />
        </li>
    </ul>
    <?php
    }
}

?>