Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用PHP在WordPress后端保存元数据_Wordpress_Metadata_Custom Post Type_Meta_Saving Data - Fatal编程技术网

如何用PHP在WordPress后端保存元数据

如何用PHP在WordPress后端保存元数据,wordpress,metadata,custom-post-type,meta,saving-data,Wordpress,Metadata,Custom Post Type,Meta,Saving Data,我是一个使用PHP在WordPress后端发布元数据的新手。我已经编写了创建元数据的代码。我需要帮助保存我编写的数据。它还需要允许我编辑保存后的数据 在本例中,它用于文本字段 我已经为输入字段创建了元数据,该字段在后端WordPress管理区域中显示良好 add_action( 'add_meta_boxes', 'cd_meta_box_add' ); function cd_meta_box_add() { add_meta_box( 'my-meta-box-id', 'Job T

我是一个使用PHP在WordPress后端发布元数据的新手。我已经编写了创建元数据的代码。我需要帮助保存我编写的数据。它还需要允许我编辑保存后的数据

在本例中,它用于文本字段

我已经为输入字段创建了元数据,该字段在后端WordPress管理区域中显示良好

add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'Job Title', 'cd_meta_box_cb', 'people', 'normal', 'high' );
    /* Save post meta on the 'save_post' hook. */
    add_action( 'save_post', 'cd_meta_box_add', 10, 2 );
}

function cd_meta_box_cb()  
{  
    echo "<input type='text' name='jobtitle'>";     
} 
我只需要代码的帮助,这些代码将把上面的元数据保存到数据库中,并允许编辑和修改

您就快到了

拼图的最后一部分是保存元数据的函数,但首先我们需要对现有代码进行一些调整:

添加动作“保存帖子”、“光盘元盒添加”,10,2;必须移动到cd_meta_box_add之外,以及

更改添加操作“保存帖子”、“光盘元盒添加”,10,2;添加操作“保存帖子”、“光盘元框”和“添加”;因为这个动作钩子只接收一个参数post ID,并且

您需要定义将处理数据的函数,它不能像现在这样是cd_meta_box_add,因此我们将创建一个名为save_cd_meta_box_data的新函数

现在我们已经成功地将元数据保存到数据库中,让我们允许用户查看/编辑它: 最终代码应如下所示:

/* Register and display metabox */
add_action( 'add_meta_boxes', 'cd_meta_box_add' );

function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'Job Title', 'cd_meta_box_cb', 'people', 'normal', 'high' );
}

function cd_meta_box_cb( $post )  
{  
    $job_title = get_post_meta( $post->ID, '_job_title', true );
    echo "<input type='text' name='jobtitle' value='" . esc_attr( $job_title ) . "'>";     
}

/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'save_cd_meta_box_data' );

function save_cd_meta_box_data( $post_id ) {

    // Autosaving, bail.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    // @TODO
    // You should add some additional security checks here
    // eg. nonce, user capabilities, etc, to prevent
    // malicious users from doing bad stuff.

    /* OK, it's safe for us to save the data now. */

    // Make sure that it is set.
    if ( ! isset( $_POST['jobtitle'] ) ) {
        return;
    }

    // Sanitize user input.
    $my_data = sanitize_text_field( $_POST['jobtitle'] );

    // Update the meta field in the database.
    update_post_meta( $post_id, '_job_title', $my_data );
}

如果是这样,我很高兴。那样的话,请考虑一下。
function cd_meta_box_cb( $post )  
{  
    $job_title = get_post_meta( $post->ID, '_job_title', true );
    echo "<input type='text' name='jobtitle' value='" . esc_attr( $job_title ) . "'>";     
}
/* Register and display metabox */
add_action( 'add_meta_boxes', 'cd_meta_box_add' );

function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'Job Title', 'cd_meta_box_cb', 'people', 'normal', 'high' );
}

function cd_meta_box_cb( $post )  
{  
    $job_title = get_post_meta( $post->ID, '_job_title', true );
    echo "<input type='text' name='jobtitle' value='" . esc_attr( $job_title ) . "'>";     
}

/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'save_cd_meta_box_data' );

function save_cd_meta_box_data( $post_id ) {

    // Autosaving, bail.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    // @TODO
    // You should add some additional security checks here
    // eg. nonce, user capabilities, etc, to prevent
    // malicious users from doing bad stuff.

    /* OK, it's safe for us to save the data now. */

    // Make sure that it is set.
    if ( ! isset( $_POST['jobtitle'] ) ) {
        return;
    }

    // Sanitize user input.
    $my_data = sanitize_text_field( $_POST['jobtitle'] );

    // Update the meta field in the database.
    update_post_meta( $post_id, '_job_title', $my_data );
}