0

所以这是我的代码:

function pages_inner_custom_box2( $post ) {

    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), 'pages_noncename' );

    // The actual fields for data entry
    $cats = get_post_meta( $post->ID, 'pages_categories_field', true);
    echo '<ul>';
    foreach( (get_categories() ) as $category):
        if( $category->cat_ID != 14 ):
            foreach( $cats as $values ) {
                if( $values ==  $category->cat_ID ){
                    $checked = "checked=checked";
                } else {
                    $checked = false;
                }
            }
            echo'<li id="cat-'.$category->cat_ID.'">
            <input type="checkbox" name="pages_categories_field[]" id="'
            .$category->cat_ID.'" value="'
            .$category->cat_ID.'" '
            .$checked.'> <label for="'
            .$category->cat_ID.'">'
            .__($category->cat_name, 'pages_textdomain' )
            .'</label></li>';
        endif;
    endforeach;
    echo '</ul>';
}

那么这是做什么的,它在元框中显示类别,现在问题是在我更新选择之后,我选择了多个类别,它只会MARK AS CHECKED只有一个类别。数据直接保存在数据库中。问题只是在选择上。

那么我做错了什么?

4

1 回答 1

2

你的代码是好的,但你有一些小错误,所以:

function pages_inner_custom_box2( $post ) {

    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), 'pages_noncename' );

    // The actual fields for data entry
    $cats = get_post_meta($post->ID,'pages_categories_field',true);
    echo '<ul>';
    foreach((get_categories()) as $category):
        $cat_id = $category->cat_ID;
        if($cat_id != 14):
            $checked = (in_array($cat_id,(array)$cats)? ' checked="checked"': "");
            echo'<li id="cat-'.$cat_id.'"><input type="checkbox" name="pages_categories_field[]" id="'.$cat_id.'" value="'.$cat_id.'"'.$checked.'> <label for="'.$cat_id.'">'.__($category->cat_name, 'pages_textdomain' ).'</label></li>';
        endif;
    endforeach;
    echo '</ul>';
}

并确保在 save_post 回调函数中将其保存为数组,如下所示:

update_post_meta($post_id,'pages_categories_field',$_POST['pages_categories_field']);
于 2012-12-23T21:36:07.840 回答