web-dev-qa-db-ja.com

フロントエンドでの投稿 - チェックボックス以外はすべて節約できますか?

チェックボックス配列を除くすべてのフィールドを保存しているWordpressのフロントエンド上のフォームがあります。バックエンドのポストエディタでボックスにチェックを入れると正しい値を表示して保存し、目盛は前面に正しく表示されます。ただし、フロントエンドのボックスをクリックしても保存されません。他のすべてのフィールドはフォントとフォントから正しく保存されています。解決しようとは思われませんでしたが、大幅に有り難いです。これがコードです:

$query = new WP_Query( array( 'post_type' => 'property', 'posts_per_page' => '-1' ) ); 

if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); 

if(isset( $_GET['post'] ) ) {
    if ( $_GET['post'] == $post->ID ) {
        $current_post = $post->ID;
        $options = $custom_meta_fields[7]['options'];
        $checkboxes = get_post_meta($current_post, 'custom_cgtest', true);
}
}
endwhile; endif; 
wp_reset_query();
global $current_post;

if(isset($_POST['submitted']) && isset($_POST['post_nonce_field']) && wp_verify_nonce($_POST['post_nonce_field'], 'post_nonce')) {
$post_information = array(
'ID' => $current_post,
'post_title' => ($_POST['post_title']),
'post_content' => esc_attr(strip_tags($_POST['postContent'])),
'post-type' => 'property',
'post_status' => 'publish',
);    

$post_id = wp_update_post($post_information);
if($post_id) { 
update_post_meta($post_id, 'custom_cgtest', ($_POST['cbn']));
}
}

ページ内:

foreach ($options as $option) {  
    echo '<input type="checkbox" name="cbn[]" id="'.$option['value'].'"',$checkboxes && in_array($option['value'], $checkboxes) ? ' checked="checked"' : '',' /> ';
    echo $option['value'];
    }

Functions.phpで:

array (  
'label' => 'Checkbox Group',  
'desc'  => 'A description for the field.',  
'id'    => $prefix.'cgtest',  
'type'  => 'cgtest',  
'options' => array (  
    'one' => array (  
        'label' => 'Option One',  
        'value' => 'one'  
    ),  
    'two' => array (  
        'label' => 'Option Two',  
        'value' => 'two'  
    ),  
    'three' => array (  
        'label' => 'Option Three',  
        'value' => 'three'  
    )  
)  
)

それ以上のコードが必要な場合はお知らせください。

2
user32437

データベースでデータを確認しましたか?

私の推測では、問題はここにあります。

echo '<input type="checkbox" name="cbn[]" id="'.$option['value'].'"',$checkboxes && in_array($option['value'], $checkboxes) ? ' checked="checked"' : '',' /> ';

する必要があります:

echo '<input type="checkbox" name="cbn[]" id="'.$option['value'].'"'.$checkboxes && in_array($option['value'], $checkboxes) ? ' checked="checked"' : ''.' /> ';

編集:あなたは貧弱なPHPを混同しています。三次関数を括弧で囲んでみてください。

echo '<input type="checkbox" name="cbn[]" id="' . $option['value'] .    '"' . ( $checkboxes && in_array( $option['value'], (array) $checkboxes ) ? ' checked="checked"' : '' ) . ' /> ';
1
OriginalEXE