Viewing 15 reply threads
  • Author
    Posts
    • #5160
      hozefasmile
      Member

      Hi,

      I am working on an eCommerce site http://uniqueswebsolution.com/clippingc/ and I am using piklist beta version 0.9.9.6

      On the order detail page I want to display a add more field of upload files. You can see the product detail page to know what I have added on the product detail page through piklist http://uniqueswebsolution.com/clippingc/product/color-correction/

      For adding this add more field I had created order-form.php under piklist/parts/ folder of the theme and provided following code to display it.

      <?php
      /*
      Title: Upload files
      Method: post
      Message: Your data has been successfully uploaded
      
      */
      piklist('field', array(
          'type' => 'group'
          ,'field' => 'upload_order_attch'
          ,'label' => __('Upload your images') 
          ,'scope' => 'shop_order'
          ,'columns' => 12
          ,'add_more' => true
          ,'fields' => array(
            array(
              'type' => 'file'
              ,'field' => 'attch-single'
          	,'scope' => 'shop_order'
              ,'label' => __('Add File(s)','piklist')
          	,'description' => __('You can add image files or zip file with all images in it.','piklist')
          	,'options' => array(
            		'basic' => true
          		)
              )
            )
          )
        );
      
      piklist('field', array(
          'type' => 'submit'
          ,'field' => 'submit'
          ,'value' => 'Submit'
        ));
      ?>

      I have used scope as “shop_order” , that I think is the post type for order in woocommerce, ref https://docs.woothemes.com/document/installed-taxonomies-post-types/

      Now to display it on order detail page I am adding this code in woocommerce/order/order-details.php

      <?php 
      		// Additional attachement display on detail page
      		$upload_order_attch = get_post_meta($post->ID, 'upload_order_attch', true);
      		// Get your custom template part: addmore-workout-template.php
      		piklist(get_stylesheet_directory() . '/template/addmore-workout-template', array('data' => $upload_order_attch, 'loop' => 'data'));
      	?>

      According to the instruction provided in your documentation. and then created a template file addmore-workout-template.php and added this code in it

      <?php 
      	echo $data['upload_order_attch']; 
      ?>

      But nothing is displaying on the order detail page when creating an order by adding images to piklist add more field.

      Please suggest me what I am missing and what next we need to do here to make it available on the order detail page?

      Thanks
      Hozefa

    • #5166
      Steve
      Keymaster

      Two things you will need to update:

      FORM:
      Your scope should be post_meta, because that’s where the data is being saved.
      ,'scope' => 'post_meta'

      You will need to include a hidden field to tell Piklist which CPT to save against:

        piklist('field', array(
          'type' => 'hidden'
          ,'scope' => 'post'
          ,'field' => 'post_type'
          ,'value' => 'shop_order'
        ));
      

      You can see a sample of this in:
      plugins/piklist/add-ons/piklist-demos/parts/forms/new-post-with-validation.php

      DISPLAY THE DATA:
      One of the big changes with v0.9.9x is that you no longer need all that code to retrieve you data. You can easily pull it like a standard PHP array and loop through it.

      Try this:

      $upload_orders = get_post_meta($post->ID, 'upload_order_attch', false);
      
      foreach ($upload_orders as $upload_order => $value)
      {
        echo $value;
      }
      

      Let us know if that works for you.

    • #5179
      hozefasmile
      Member

      Hi Steve,

      I have applied your modification, but still its not showing on the related order detail page for example http://uniqueswebsolution.com/clippingc/my-account/view-order/60/

      I think during the file upload we have to click submit button to add those images, this refreshes page, so it not get connected to the order and just saved as a separate file. But if we can connect with the order post that is being created during the checkout process, then we can show up them in corresponding order detail page.

      Thanks

    • #5180
      Steve
      Keymaster

      Sorry, I’m not following. Are you saying this is empty?
      $upload_orders = get_post_meta($post->ID, 'upload_order_attch', false);

    • #5183
      hozefasmile
      Member

      Yes, that shows empty result.

    • #5184
      Steve
      Keymaster

      Does this work?

      $meta = get_post_custom($post->ID);

    • #5230
      hozefasmile
      Member

      Hi I have checked $meta = get_post_custom($post->ID); , it shows Array as result.

      But the above code

      $upload_orders = get_post_meta($post->ID, 'upload_order_attch', false);
      				foreach ($upload_orders as $upload_order => $value)
      				{
      				  echo $value;
      				}

      Show error “Warning: Invalid argument supplied for foreach() in /home/uniqueswebsol/public_html/clippingc/wp-content/themes/clippingstar-child/woocommerce/order/order-details.php on line 26”

    • #5234
      Steve
      Keymaster

      Ok. It looks like you don’t have access to the WordPress $post object. Try this:

      global $post;
      
      $meta = get_post_custom($post->ID);
      
      
    • #5237
      hozefasmile
      Member

      Ok,

      I have added global $post on my code, but its just informing that its an array. How I can get the url value from it for each uploaded images?

      For testing purpose I have created a page http://uniqueswebsolution.com/clippingc/testing/ . You can see that the code

      $meta = get_post_custom($post->ID);
      echo "<p class='piklist-class'>".$meta."</p>";
      print_r($meta);

      result in an array like this
      Array ( [_edit_lock] => Array ( [0] => 1449342554:1 ) [_edit_last] => Array ( [0] => 1 ) [_wp_page_template] => Array ( [0] => page-faq.php ) [_wpb_vc_js_status] => Array ( [0] => false ) [_vc_post_settings] => Array ( [0] => a:2:{s:7:”vc_grid”;a:0:{}s:10:”vc_grid_id”;a:0:{}} ) [slide_template] => Array ( [0] => default ) [layout] => Array ( [0] => fullwidth ) [sidebar] => Array ( [0] => blog-sidebar ) [bg_rev_slider] => Array ( [0] => ) [banner_type] => Array ( [0] => ) [banner_width] => Array ( [0] => wide ) [layer_slider] => Array ( [0] => ) [rev_slider] => Array ( [0] => ) [banner] => Array ( [0] => ) [product_slider] => Array ( [0] => ) [portfolio_columns] => Array ( [0] => 4 ) [portfolio_cat] => Array ( [0] => 0 ) [faq_cat] => Array ( [0] => 0 ) [content_top] => Array ( [0] => ) [content_bottom] => Array ( [0] => ) )

      and the code

      global $post;
      $upload_orders = get_post_custom($post->ID, 'upload_order_attch', false);
      foreach ($upload_orders as $upload_order => $value)
      {
      print_r($value);
      }

      gives array result like this
      Array ( [0] => 1449342675:1 ) Array ( [0] => 1 ) Array ( [0] => page-faq.php ) Array ( [0] => false ) Array ( [0] => a:2:{s:7:”vc_grid”;a:0:{}s:10:”vc_grid_id”;a:0:{}} ) Array ( [0] => default ) Array ( [0] => fullwidth ) Array ( [0] => blog-sidebar ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => wide ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => 4 ) Array ( [0] => 0 ) Array ( [0] => 0 ) Array ( [0] => ) Array ( [0] => )

      But when I try
      get_post_meta in place of get_post_custom
      its shows blank , no result.

      I actually want the customer who is ordering a graphic design service using woocommerce, will be able to upload his images during the order process and then those images will be available in backend individual order pages and front end individual order pages as image link to download. So that the site owner knows what images he have work for the particular order, and then by backend order detail page, he can upload is prepared (edited) graphic work and in same way that will be available on the customer order detail page for download.

      Thanks
      Hozefa

    • #5250
      Steve
      Keymaster

      Just took another look at this I think I understand the issue. Your original field configuration is incorrect. If you open the Piklist plugin and look at this file in the demos you’ll understand how to do this:
      piklist/add-ons/piklist-demos/parts/forms/new-post-with-validation.php

      Try this:

        // Save field to this post_type
        piklist('field', array(
          'type' => 'hidden'
          ,'scope' => 'post'
          ,'field' => 'post_type'
          ,'value' => 'shop_order'
        ));
      
      
        piklist('field', array(
          'type' => 'file'
          ,'scope' => 'post_meta' // scope needs to be set on EVERY field for front-end forms.
          ,'field' => 'upload_order_attch'
          ,'label' => Add File(s)'
          ,'description' => 'You can add image files or zip file with all images in it.'
          ,'add_more' => true
          ,'options' => array(
            'modal_title' => __('Add File(s)', 'piklist-demo')
            ,'button' => __('Add', 'piklist-demo')
            ,'basic' => true
          )
        ));
      
    • #5291
      hozefasmile
      Member

      Hi,

      I have tried your code

      piklist('field', array(
          'type' => 'file'
          ,'scope' => 'post_meta' // scope needs to be set on EVERY field for front-end forms.
          ,'field' => 'upload_order_attch'
          ,'label' => 'Add File(s)'
          ,'description' => 'You can add image files or zip file with all images in it.'
          ,'add_more' => true
          ,'options' => array(
            'modal_title' => __('Add File(s)', 'piklist-demo')
            ,'button' => __('Add', 'piklist-demo')
            ,'basic' => true
          )
        ));

      in the order-form.php , but this distort the upload field in the front end. http://uniqueswebsolution.com/clippingc/product/photo-retouching/
      cliking plus button doesn’t create the new brows button.

      My previous code

      piklist('field', array(
          'type' => 'group'
          ,'field' => 'upload_order_attch'
          ,'label' => __('Upload your images') 
          ,'scope' => 'post_meta'
          ,'columns' => 12
          ,'add_more' => true
          ,'fields' => array(
            array(
              'type' => 'file'
              ,'field' => 'attch-single'
          	,'scope' => 'post_meta'
              ,'label' => __('Add File(s)','piklist')
          	,'description' => __('You can add image files or zip file with all images in it.','piklist')
          	,'options' => array(
            		'basic' => true
          		)
              )
            )
          )
        );

      was showing the add more upload field correctly.

      I also want to know how we can callback a already submitted form fields ?

      Thanks
      Hozefa

    • #5366
      hozefasmile
      Member

      Hi Steve,

      Have you reviewed the product page http://uniqueswebsolution.com/clippingc/product/photo-retouching/ ?

      Please suggest me what we should do to get correct working upload field and getting array result. And I am really very interested to know how we can callback a already submitted form fields ? because I need to callback it to show the urls on particular order pages.

      Thanks
      Hozefa

    • #5372
      Steve
      Keymaster

      @hozefasmile– What I’m seeing on your page is your GROUP code, not what I wrote. Try using the code I wrote on a non-woocommerce page. Does it work?

    • #7830
      hbaker
      Participant

      Hozefa, were you ever able to get this sorted out? I am attempting to do the exact same thing. I have everything working except for the form submission on the Order Details (WooCommerce) page. I can’t get it to submit the files from the frontend. When I click the submit button it doesn’t do anything. Almost like there’s an AJAX conflict preventing the form from submitting.

    • #8726
      alexanderbiscajin
      Participant

      I am trying the same.

    • #8735
      alexanderbiscajin
      Participant

      Can you further explain ?

Viewing 15 reply threads
  • You must be logged in to reply to this topic.