<p>
<?php
$options = get_option( \'city\' );
$names = explode( PHP_EOL, $options );
?>
<label for="City" class="timeshare-row-title"><?php _e( \'City:\', \'timeshare-textdomain\' )?></label>
<select name="city" id="city">
<?php foreach ( $names as $name ) {
printf(
\'<option value="%s" selected="selected">%s</option>\',
$name,
$name
);
} ?>
</select>
</p>
保存功能:
if( isset( $_POST[ \'city\' ] ) ) {
update_post_meta( $post_id, \'city\', sanitize_text_field( $_POST[ \'city\' ] ) );
}
这是用于工作选择元数据库的代码,这是使用硬编码选项完成的。
<p>
<label for="beds" class="timeshare-row-title"><?php _e( \'Bedrooms:\', \'timeshare-textdomain\' )?></label>
<select name="beds" id="beds">
<option value="1" <?php if ( isset ( $timeshare_stored_meta[\'beds\'] ) ) selected( $timeshare_stored_meta[\'beds\'][0], \'1\' ); ?>><?php _e( \'1\', \'timeshare-textdomain\' )?></option>\';
<option value="2" <?php if ( isset ( $timeshare_stored_meta[\'beds\'] ) ) selected( $timeshare_stored_meta[\'beds\'][0], \'2\' ); ?>><?php _e( \'2\', \'timeshare-textdomain\' )?></option>\';
<option value="3" <?php if ( isset ( $timeshare_stored_meta[\'beds\'] ) ) selected( $timeshare_stored_meta[\'beds\'][0], \'3\' ); ?>><?php _e( \'3\', \'timeshare-textdomain\' )?></option>\';
<option value="4" <?php if ( isset ( $timeshare_stored_meta[\'beds\'] ) ) selected( $timeshare_stored_meta[\'beds\'][0], \'4\' ); ?>><?php _e( \'4\', \'timeshare-textdomain\' )?></option>\';
</select>
</p>
and the save code for it:
// Checks for input and saves if needed
if( isset( $_POST[ \'beds\' ] ) ) {
update_post_meta( $post_id, \'beds\', $_POST[ \'beds\' ] );
}
保存功能:
function timeshare_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ \'timeshare_nonce\' ] ) && wp_verify_nonce( $_POST[ \'timeshare_nonce\' ], basename( __FILE__ ) ) ) ? \'true\' : \'false\';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
最合适的回答,由SO网友:sakibmoon 整理而成
从发布的Github文件中,打印元框的函数如下
function timeshare_meta_callback( $post ) {
正如你所见,
$post
传递给此函数。这是一个
WP_Post 对象,其中包含该帖子的所有信息。
WP\\u Post有一个名为ID
, 这是获取保存的当前post meta值所必需的。所以,你需要这样做获取帖子id
$post_id = $post->ID;
这是完整的代码
<p>
<?php
$post_id = $post->ID;
$options = get_option( \'city\' );
$city_value = get_post_meta( $post_id, \'city\', true );
$names = explode( PHP_EOL, $options );
?>
<label for="City" class="timeshare-row-title"><?php _e( \'City:\', \'timeshare-textdomain\' )?></label>
<select name="city" id="city">
<?php foreach ( $names as $name ) {
printf(
\'<option value="%s" %s>%s</option>\',
$name,
selected($name, $city_value, false),
$name
);
} ?>
</select>
</p>
相反,在保存过程中,只传递post id,从这里可以看到。
function timeshare_meta_save( $post_id ) {
因此,您可以这样做来直接保存post meta值
if( isset( $_POST[ \'city\' ] ) ) {
update_post_meta( $post_id, \'city\', sanitize_text_field( $_POST[ \'city\' ] ) );
}