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 CHECKED1 つだけになります。データはデータベースに保存されます。問題は選択について。

それで、私は何を間違っていますか?

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