如何用PHP在WordPress后端保存元数据
我是一个使用PHP在WordPress后端发布元数据的新手。我已经编写了创建元数据的代码。我需要帮助保存我编写的数据。它还需要允许我编辑保存后的数据 在本例中,它用于文本字段 我已经为输入字段创建了元数据,该字段在后端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
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 );
}