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 に答える