screenshot of error我创建了一个自定义元框,其中包含3个字段author
,date
和price
。
但是,如果将值存储在数据库中,则author
,date
和price
的元关键字将分别存储在不同的帖子中。我想将所有具有相同元键的帖子存储在$postid
作为键的一个字段中,并将其元值存储为数组中的值。
这是我的代码:
/**
* Register meta boxes.
*/
function hcf_register_meta_boxes() {
add_meta_box( 'hcf-1', __( 'Hello Custom Field', 'hcf' ), 'hcf_display_callback', 'post' );
}
add_action( 'add_meta_boxes', 'hcf_register_meta_boxes' );
/**
* Meta box display callback.
*
* @param WP_Post $post Current post object.
*/
function hcf_display_callback( $post ) { ?>
<!-- echo "Hello Custom Field"; -->
<div class="hcf_box">
<style scoped>
.hcf_box{
display: grid;
grid-template-columns: max-content 1fr;
grid-row-gap: 10px;
grid-column-gap: 20px;
}
.hcf_field{
display: contents;
}
</style>
<p class="meta-options hcf_field">
<label for="hcf_author">Author</label>
<input id="hcf_author"
type="text"
name="hcf_author"
value="<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_author', true ) ); ?>">
</p>
<p class="meta-options hcf_field">
<label for="hcf_published_date">Published Date</label>
<input id="hcf_published_date"
type="date"
name="hcf_published_date"
value="<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_published_date', true ) ); ?>">
</p>
<p class="meta-options hcf_field">
<label for="hcf_price">Price</label>
<input id="hcf_price"
type="number"
name="hcf_price"
value="<?php echo esc_attr( get_post_meta( get_the_ID(), 'hcf_price', true ) ); ?>">
</p>
</div>
<?php }
/**
* Save meta box content.
*
* @param int $post_id Post ID
*/
function hcf_save_meta_box( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( $parent_id = wp_is_post_revision( $post_id ) ) {
$post_id = $parent_id;
}
$fields = [
'hcf_author'
'hcf_published_date',
'hcf_price',
];
foreach ( $fields as $field ) {
if ( array_key_exists( $field, $_POST ) ) {
update_post_meta( $post_id, $field, sanitize_text_field( $_POST[$field] ) );
}
}
}
add_action( 'save_post', 'hcf_save_meta_box' );