在WordPress metabox如何更新帖子后检查选中的单选按钮

时间:2016-05-14 02:39:30

标签: php wordpress radio-button save meta-boxes

我创建了一个可用于向帖子添加侧边栏的元数据箱。 get_sidebar函数将根据用户是否检查侧栏单选按钮使用if语句添加到post模板,但我还没有那么远。

到目前为止,元数据显示在编辑器界面中,但是当我检查侧边栏单选按钮时,它会在我更新帖子后返回未选中状态。

这是我用来在帖子更新后检查单选按钮的方法。

$layout = $_POST["layout"]; 
<input type="radio" name="layout" <?php if (isset($layout) && $layout=="right-sidebar") echo "checked"; ?> value="right-sidebar">

这是我用来创建和更新元数据的完整代码:

<?php

function hill_add_layout_metabox() {

    add_meta_box(
        'layout_metabox',
        'Layout1',
        'hill_callback_layout_matabox',
        'post',
        'side',
        'high'
    );
}

add_action('add_meta_boxes', 'hill_add_layout_metabox');

function hill_callback_layout_matabox() {
    $layout = $_POST["layout"]; 
    ?>
    <input type="radio" name="layout" <?php if (isset($layout) && $layout=="right-sidebar") echo "checked"; ?> value="right-sidebar">  Right Sidebar

    <?php
}

function hill_save_layout_metabox($post_id) {
    $is_autosave = wp_is_post_autosave ( $post_id );
    $is_revision = wp_is_post_revision ( $post_id );

    if ( $is_autosave || $is_revision ) {
        return;
    }

    $layout = $_POST["layout"];

    if (isset($layout) && $layout=="right-sidebar") {
        update_post_meta( $post_id, $layout );
    }
}

add_action('save_post', 'hill_save_layout_metabox');

?>

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

首先,在保存元值时,添加要保存的值:

这是一个偏好问题,但如果选中其他明智的'',我会将值设置为'on'。

$value = isset($layout) && $layout=='right-sidebar' ? 'on' : ''
update_post_meta( $post_id, 'right-sidebar', $value  );

更新帖子后,使用get_post_meta获取您保存的值,并根据需要设置单选按钮; WP checked()函数对此非常方便:

<?php $check = get_post_meta( $post_id, 'right-sidebar', true ); ?>
<input type="radio" name="layout" <?php checked( $check, 'on' ); ?> value="right-sidebar">