চেকবক্স সহ মেটাবক্স আপডেট হচ্ছে না


10

আমি একটি একক চেকবাক্স সহ একটি মেটা_বাক্স সেট করার চেষ্টা করেছি, সবকিছু ঠিকঠাক হয়, তবে আমি যদি এটিটি চেক না করে পোস্টটি সংরক্ষণ করি তবে এটি পরীক্ষিত হিসাবে আবার চিহ্নিত হয়েছে, আমি একবার দেখে নিচ্ছি তবে আমি আমার ভুলটি খুঁজে পাচ্ছি না।

আমার কোড একবার দেখুন

function am_checkbox_option() {
    global $post;
    $custom = get_post_custom($post->ID);
    $front_event = $custom["front_event"][0];
    wp_nonce_field(__FILE__, 'am_front_event');
    if ( $front_event ) {
        $checked = "checked=\"checked\"";
    } else {
        $checked = "";
    }
?>
    <label>Display Content? (type yes):</label>
    <input type="checkbox" name="front_event" value="true" <?php echo $checked; ?> />
<?php
        }
}

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

    global $post;

    if ( $_POST && !wp_verify_nonce($_POST['am_front_event'], __FILE__) ) {
        return;
    }

    if ( isset($_POST['front_event']) ) {
        update_post_meta($post->ID, 'front_event', $_POST['front_event']);
    }

});

আগাম ধন্যবাদ

উত্তর:


14

আমি আগে ব্যবহার করেছি এমন কোডটি এখানে - মূল পার্থক্যটি আমার কাছে মনে হয় যে আপনি যা পরীক্ষা করছেন তা নির্ধারণ করা উচিত কিনা এর চেয়ে মানটি কী তার চেয়ে মেটা বিদ্যমান আছে কিনা তা আপনি পরীক্ষা করছেন।

// Checkbox Meta
add_action("admin_init", "checkbox_init");

function checkbox_init(){
  add_meta_box("checkbox", "Checkbox", "checkbox", "post", "normal", "high");
}

function checkbox(){
  global $post;
  $custom = get_post_custom($post->ID);
  $field_id = $custom["field_id"][0];
 ?>

  <label>Check for yes</label>
  <?php $field_id_value = get_post_meta($post->ID, 'field_id', true);
  if($field_id_value == "yes") $field_id_checked = 'checked="checked"'; ?>
    <input type="checkbox" name="field_id" value="yes" <?php echo $field_id_checked; ?> />
  <?php

}

// Save Meta Details
add_action('save_post', 'save_details');

function save_details(){
  global $post;

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
    return $post->ID;
}

  update_post_meta($post->ID, "field_id", $_POST["field_id"]);
}

কোডেক্স পৃষ্ঠায় add_meta_boxesউদাহরণ হিসাবে মেটাবক্স যোগ করার জন্য ক্রিয়াটি ব্যবহার করুন (এটির জন্য এটি নির্দিষ্টভাবে রয়েছে) add_metabox। পোস্টের ধরণ এবং পোস্ট অবজেক্টটি কলব্যাকে পাস করার ক্ষেত্রেও আপনি উপকৃত হবেন।
t31os

13

চেক না করা হলে পোস্ট মেটা মুছতে অন্য কোনও ধারা যুক্ত করুন এবং আপনার কোডটি ঠিকঠাক করবে, তাই পরিবর্তন করুন:

if ( isset($_POST['front_event']) ) {
    update_post_meta($post->ID, 'front_event', $_POST['front_event']);
}

প্রতি

if ( isset($_POST['front_event']) ) {
    update_post_meta($post->ID, 'front_event', $_POST['front_event']);
}else{
    delete_post_meta($post->ID, 'front_event');
}

2
যদি চেকবক্সটি চেক না করা থাকে তবে এটি $ _POST অ্যারেতে থাকবে না, এটি কেবলমাত্র চেক করা হলে প্রেরণ করা হয়, সুতরাং অন্য বিবৃতিটি কেন কাজ করে।
টম জে নোয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.