自定义帖子类型wordpress中的复选框

时间:2019-04-29 09:36:50

标签: wordpress

我尝试在wordpress上以自定义帖子类型创建复选框,数据库中的注册已完成,但是我希望如果取消选中该复选框,则该复选框仍为空。

<?php


    class Fastcat_Metabox
    {

        private $id;
        private $title;
        private $post_type;
        private $fields = [];

        public static function addJS(){
            add_action('admin_enqueue_scripts', function(){
                wp_register_script('uploaderjs', get_template_directory_uri() . '/assets/js/uplaoder.js');
                wp_enqueue_script('uploaderjs');
            });
        }

        /**
         * Fastcat_Metabox constructor.
         *  @param $id ID de la boite
         *  @param $title Titre de la boite
         *  @param $post_type Post type
         */

        //  Construction de la function
            public function __construct($id , $title, $post_type)
            {
                add_action('admin_init', array(&$this, 'create'));
                add_action('save_post', array(&$this, 'save'));
                $this->id = $id;
                $this->title = $title;
                $this->post_type = $post_type;
            }



        public function create(){
            if(function_exists('add_meta_box')) {
                add_meta_box($this->id , $this->title, array(&$this, 'render'), $this->post_type);
            }

        }

        public function save($post_id){

                if(

                    (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) ||
                    (defined('DOING_AJAX') && DOING_AJAX)


                ){
                    return false;
                }


                if(!current_user_can('edit_post', $post_id)){
                    return false;
                }



              if (!wp_verify_nonce($_POST[$this->id . '_nonce'], $this->id)){
                    return false;
              }







    foreach($this->fields as $field) {
        $meta = $field['id'];
            if(isset($_POST[$meta])){
                $value = $_POST[$meta];
            if(get_post_meta($post_id, $meta)){

                update_post_meta($post_id, $meta, $value);

            } else {

                if ($value === '') {

                delete_post_meta($post_id, $meta);

            } else {

                add_post_meta($post_id, $meta , $value );

                    }
                }
            }
        }      


        public function render(){

            global $post;

            foreach($this->fields as $field) {

                extract($field);

                $value = get_post_meta($post->ID, $id , true);

                if($value == ''){

                    $value = $default;
                }
                require __DIR__ .'/'. $field['type'] . '.php';



            }

    echo '<input type="hidden" name="' .$this->id .'_nonce" value="' .wp_create_nonce($this->id). '">';
        }


    public function add($id, $label, $type='text' , $default='') {

            $this->fields[] = [
                'id' => $id,
                'name' => $label,
                'type' => $type,
                'default' => $default
            ];
                            return $this;
        }
    }
    Fastcat_Metabox::addJS();
    // CUSTOM POST TYPE -> COMPETITION -> Ajout des parties Information et Date supplémentaire
    $box = new Fastcat_Metabox('compet' , '<h2>Information compétition</h2>', 'competition');
    $box->add('fastcat_adresse','<strong> Adresse: </strong> ')
        ->add('fastcat_startdate', '<strong>Date </strong> ', 'date' )
        ->add('fastcat_starttime', '<strong>Heure de début </strong> ', 'time' )
        ->add('fastcat_enddate', ' <strong>Heure de fin </strong>', 'timeend')
        ->add('fastcat_choice', '<strong>Choix compétitions </strong>', 'checkbox')
        ->add('fastcat_choice2', '<strong>Choix compétitions </strong>', 'checkbox2')
        ->add('fastcat_description', '<strong>Description de la compétition  </strong>', 'textarea')
        ->add('fastcat_space', '<strong>Nombre de place </strong> ', 'number')
        ->add('fastcat_rate', '<strong>Tarif </strong>', 'rate');

    $box = new Fastcat_Metabox('ition' , '<h2>Date Supplémentaire</h2>', 'competition');
    $box->add('fastcat_startdate2', '<strong>Date</strong> ', 'date2')
        ->add('fastcat_starttime2', '<strong>Heure de début</strong> ', 'time2')
        ->add('fastcat_enddate2', '<strong> Heure de fin </strong>', 'timeend2')
        ->add('fastcat_startdate3', '<strong>Date</strong> ', 'date3')
        ->add('fastcat_starttime3', '<strong>Heure de début</strong> ', 'time3')
        ->add('fastcat_enddate3', '<strong> Heure de fin</strong> ', 'timeend3');

    $box = new Fastcat_Metabox('cat' , '<h2>Information organisateur</h2>', 'competition');
    $box->add('fastcat_organisateur','<strong>Nom de l\'organisateur</strong>','name_organisateur')
            ->add('fastcat_picture', '<strong Image de l\'organisateur','picture_organisateur')
            ->add('fastcat_club', '<strong>Numéro de club</strong> ', 'number_club')
            ->add('fastcat_adresse','<strong> Adresse: </strong> ', 'text')
            ->add('fastcat_phone', '<strong> Téléphone </strong>', 'phone')
            ->add('fastcat_mail', '<strong>Email</strong> ', 'mail')
            ->add('fastcat_siteweb', '<strong>Site internet</strong> ', 'web')
            ->add('fastcat_description_organisateur', '<strong>Description de la compétition  </strong>', 'textarea2');




    <div class="meta-box-item-content" style="padding-bottom:0.3rem; ">
      <input type="checkbox" id="<?= $id; ?>" name="<?= $id; ?>" value="Fastcat" <?php if($value == "Fastcat" ) $value_checked = 'checked="checked"'; echo $value_checked; $
      <label for="<?= $value; ?>">FASTCAT</label>
    </div>

我尝试在wordpress上以自定义帖子类型创建复选框,数据库中的注册已完成,但是我希望如果取消选中该复选框,则该复选框仍为空。

0 个答案:

没有答案