我在帖子页面中添加了元框,这样我就可以为每个帖子选择布局。我创建了一个元框,它正在显示,但无法保存。
if ( ! function_exists( 'post_layout_meta_box' ) ){
function post_layout_meta_box( $post ){
$custom = get_post_custom($post->ID);
$page_layout = isset($custom["page_layout_left"][0]) ? $custom["page_layout_left"][0] : ( isset($custom["page_layout_right"][0]) ? $custom["page_layout_right"][0] : $custom["page_layout_none"][0] );
?>
<p>
<select name="page_layout" id="page_layout">
<option value="left_sidebar" <?php selected( $page_layout, 'left_sidebar' ); ?>>Left Sidebar</option>
<option value="right_sidebar" <?php selected( $page_layout, 'right_sidebar' ); ?>>Right Sidebar</option>
<option value="full_width" <?php selected( $page_layout, 'full_width' ); ?>>No Sidebar</option>
</select>
</p>
<?php
}
}
if ( ! function_exists( 'post_save_layout_meta_box' ) ){
function post_save_layout_meta_box($post_id){
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
return $post_id;
} else{
if( isset( $_POST['page_layout'] ) ) {
update_post_meta( $post_id, 'page_layout', wp_kses($_POST['page_layout'], '') );
}
}
}
}
add_action( 'save_post', 'post_save_layout_meta_box' );
那么我错过了什么?例如,当我选择右侧栏时,它会在更新页面后将值返回到左侧栏。
编辑:搞清楚了:
问题在于:
$page_layout = isset($custom["page_layout_left"][0]) ? $custom["page_layout_left"][0] : ( isset($custom["page_layout_right"][0]) ? $custom["page_layout_right"][0] : $custom["page_layout_none"][0] );
应该是
$page_layout = isset($custom["page_layout"][0]) ? $custom["page_layout"][0] : 'left_sidebar';
我想,在这些代码行中存在问题。Wordpress与page_layout_left、page_layout _right混淆。
$page_layout = isset($custom["page_layout_left"][0]) ? $custom["page_layout_left"][0] : ( isset($custom["page_layout_right"][0]) ? $custom["page_layout_right"][0] : $custom["page_layout_none"][0] );
update_post_meta( $post_id, 'page_layout', wp_kses($_POST['page_layout'], '') );
我建议,如果你想在update_post_meta()函数中使用page_layout_left,那么你应该首先找到用户选择的选项,即左、右或全宽。
之后,在update_post_meta函数中,不要使用page_layout自定义字段名,而是像这样使用page_llayout_left或page_layout_right。
update_post_meta( $post_id, 'page_layout_left', wp_kses($_POST['page_layout'], '') );
希望它能起作用。
快乐编码。
Atul Jindal