0

我的元框保存似乎有问题,不完全确定我做错了什么。任何帮助将不胜感激!

这是我的函数文件:

add_action( 'add_meta_boxes', 'cd_meta_box_add' );

function cd_meta_box_add()  
{
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
    $template_file = get_post_meta($post_id,'_wp_page_template',TRUE);

    if ($template_file == 'golf.php')
    {
        add_meta_box ( 
            'golf-times', 
            'Golf Opening Times & Prices', 
            'cd_meta_box_cb', 
            'page', 
            'normal', 
            'high' 
        );
    }
}

function cd_meta_box_cb( $post )
{
    $values = get_post_custom( $post->ID );
    $times = isset( $values['golf_meta_box_times'] ) ? esc_attr( $values['golf_meta_box_times'][0] ) : '';
    $prices = isset( $values['golf_meta_box_prices'] ) ? esc_attr( $values['golf_meta_box_prices'][0] ) : '';
    wp_nonce_field( 'golf_meta_box_nonce', 'meta_box_nonce' );
    ?>
    <div style="overflow: hidden;">
        <div style="width: 45%; float: left;">
            <p><label for="golf_meta_box_times">Opening Times</label></p>
            <p><textarea type="text" name="golf_meta_box_times" id="golf_meta_box_times" rows="5" style="width: 90%;" value="<?php echo $times; ?>"> </textarea></p>
        </div>
        <div style="width: 45%; float: left;">
            <p><label for="golf_meta_box_prices">Prices</label></p>
            <p><textarea type="text" name="golf_meta_box_prices" id="golf_meta_box_prices" rows="5" style="width: 90%;" value="<?php echo $prices; ?>"> </textarea></p>
        </div>
    </div>
    <?php   
}


add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id )
{
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'golf_meta_box_nonce' ) ) return;

    if( !current_user_can( 'edit_post' ) ) return;

    $allowed = array( 
        'a' => array(
            'href' => array()
        )
    );

    if( isset( $_POST['golf_meta_box_times'] ) )
        update_post_meta( $post_id, 'golf_meta_box_times', wp_kses( $_POST['golf_meta_box_times'], $allowed ) );

    if( isset( $_POST['golf_meta_box_prices'] ) )
        update_post_meta( $post_id, 'golf_meta_box_prices', wp_kses( $_POST['golf_meta_box_prices'], $allowed ) );

}
?>

如果有人知道如何进行此保存,那将是一个很大的帮助!

我在显示数据时也遇到了问题——但我只能假设那是它实际上没有保存的地方哈哈!

干杯

4

1 回答 1

3

functions.php据我所知,无法输出 HTML。将您的 html 包装在一个字符串中并返回它,您的文件可能会返回错误。

您的 add_meta_box 代码似乎是正确的,可能不满足条件,您确定要通过 get 发送数据吗?

于 2012-06-13T11:08:47.103 回答