WordPress.org

Forums

Multiple Custom Fields (2 posts)

  1. Lomaski
    Member
    Posted 4 years ago #

    I was asked to do a post_type which will have unknown number of fields, so i did it with jQuery and the jQuery works fine but it's not updating the fields in the DB, help please?

    The function.php part

    function post_type_lookbook() {
    	$support = array('title','author');
    	register_post_type( 'lookbook',
    		array( 'label' => __('LookBook'),'taxonomies' => array('category', 'post_tag'), 'public' => true, 'show_ui' => true,  'query_var' => true, 'supports' => $support, 'menu_position' => 5,'capability_type' => 'post','rewrite' => array( 'slug' => 'lookbook' ) ) );  
    
    }
    
    add_action('save_post', 'save_price2');
        function meta_options2(){
            global $post, $meta_boxes;
            $custom = get_post_custom($post->ID);
    		$countm = $custom["_countm"][0];
    		for($i=0,$i<$countm;$i++;){
            	$male.$i = $custom["_male".$i][0];
    		}
    
    // look up for the path
    
    global $wpdb;
    
    ?>
        <div class="form-field male"><label>Masculino:<input class="male" name="male0" rel="0" value="<?php echo $countm; ?>" /><input name="countm" class="count" type="hidden" value="<?php echo $countm;?>" /></label></div>
        <br /><a class="mais" href="#">Adicionar mais um campo</a><br /><br />//the link that adds another field(s)
    <?php
        }
    
    function save_price2(){
        global $post;
    	update_post_meta($post->ID, "_countm", $_POST["countm"]);
    	for($i=0,$i<$_POST['countm'];$i++;){
        	update_post_meta($post->ID, "_male".$i."", $_POST["male".$i]);
    	}
    
    }

    the jQuery script

    jQuery(document).ready(function() {
    jQuery('.mais').live("click", function(){
    
    	var numero = jQuery('.male:last').attr('rel');
    
    	prox = parseInt(numero);
    
    	prox = prox+1;
    
    		jQuery('.male:last')
    
    		.clone()
    
    		.appendTo('.form-field.male')
    
    		.attr('rel', prox)
    
    		.attr('name', 'male'+prox)
    
    		jQuery('.male:last').val('');
    
    		jQuery('.count').val(prox);
    
    	});
    });
  2. Lomaski
    Member
    Posted 4 years ago #

    well since nobody answered this i've made some changes to the code by myself and now I have this problem: it doesn't save the value in the database
    the php code:

    add_action('save_post', 'save_price2');
        function meta_options2(){
            global $post, $meta_boxes;
            $custom = get_post_custom($post->ID);
    		$countm = $custom["_countm"][0];
    		for($i=0;$i<=$countm;$i++){
    			$male[$i] = $custom["_male[".$i."]"][0];
    		}
    
    		$countf = $custom["countf"];
    		for($i=0;$i<=$countm;$i++){
    			$female[$i] = $custom["_female[".$i."]"][0];
    		}
    
    // look up for the path
    
    global $wpdb;
    
    ?>
        <div class="form-field male"><label>Masculino:
        <?php for($i=0;$i<=$countm;$i++){?>
        	<input class="male" name="male[<?php echo $i;?>]" rel="0" value="<?php echo $male[$i]; ?>" />
        <?php ;}?>
        <input name="countm" class="countm" type="hidden" value="<?php echo $countm;?>" />
        </label></div>
        <br /><a class="maish" href="#">Adicionar mais um campo</a><br /><br />
        <div class="form-field female"><label>Feminino:
        <?php for($i=0;$i<=$countf;$i++){?>
        <input class="female" name="female[<?php echo $i;?>]" rel="0" value="<?php echo $female[$i]; ?>" />
        <?php ;}?>
        <input name="countf" class="countf" type="hidden" value="<?php echo $countf;?>" />
        </label></div>
        <br /><a class="maism" href="#">Adicionar mais um campo</a><br /><br />
    
    <?php
        }
    
    function save_price2(){
        global $post;
    	update_post_meta($post->ID, "_countm", $_POST["countm"]);
    	for($i=0;$i<$_POST["countm"];$i++){
    		update_post_meta($post->ID, "_male[".$i."]", $_POST["male[".$i."]"]);
    	}
    	update_post_meta($post->ID, "_countf", $_POST["countf"]);
    	for($i=0;$i<$_POST["countf"];$i++){
    		update_post_meta($post->ID, "_female[".$i."]", $_POST["female[".$i."]"]);
    	}
    
    }
    register_taxonomy_for_object_type( 'post_tag', 'lookbook');

    the jquery code

    jQuery(document).ready(function() {
    jQuery('.maish').live("click", function(){
    
    	var numero = jQuery('.male:last').attr('rel');
    
    	if(numero<59){
    
    	prox = parseInt(numero);
    
    	prox = prox+1;
    
    		jQuery('.male:last')
    
    		.clone()
    
    		.appendTo('.form-field.male')
    
    		.attr('rel', prox)
    
    		.attr('name', 'male['+prox+']')
    
    		.focus()
    
    		jQuery('.male:last').val('');
    
    		jQuery('.countm').val(prox);
    
    	}else{
    		jQuery('.maish').empty();
    	}});
    jQuery('.maism').live("click", function(){
    
    	var numero = jQuery('.female:last').attr('rel');
    
    	if(numero<59){
    
    	prox = parseInt(numero);
    
    	prox = prox+1;
    
    		jQuery('.female:last')
    
    		.clone()
    
    		.appendTo('.form-field.female')
    
    		.attr('rel', prox)
    
    		.attr('name', 'female['+prox+']')
    
    		.focus()
    
    		jQuery('.female:last').val('');
    
    		jQuery('.countf').val(prox);
    
    	}else{
    		jQuery('.maism').empty();
    	}});
    });

    now anyone can help?

Topic Closed

This topic has been closed to new replies.

About this Topic