Tagged: enfold, woocommerce
-
AuthorPosts
-
May 27, 2016 at 5:23 pm #639405
Hi, I am having a problem while overriding the Woccommerce file form-shipping.php
I must change the title “Shipping to a different address?” with something else (e.g. “Are you buying it for somebody else?”).
I have read that Enfold doesn’t work with WC templates in the child theme.
could you please help me to solve the thing? O wish not change the original file as changes would be lost with a future WC upgrade
Thank you
elena
May 27, 2016 at 6:20 pm #639459Hey Elena,
I would contact WC support about it.
Best regards,
AndyMay 28, 2016 at 8:51 am #639684Right now I solved it by changing the file shipping-form in woocommerce>templates>checkout at line 40
from
<label for=”ship-to-different-address-checkbox” class=”checkbox”><?php _e( ‘Shipping to a different address?’, ‘woocommerce’ );
to
<label for=”ship-to-different-address-checkbox” class=”checkbox”><?php _e( ‘Are you buying it for somebody else?’, ‘woocommerce’ );But it will be deleted once the I update the WC
Thanks anyway
May 28, 2016 at 9:33 am #639695Hi!
You can copy that file, inside your child theme folder with the same directory
/woocommerce/checkout.phpand that, will solve your issues.
Thanks a lot for your understanding
Cheers!
BasilisMay 28, 2016 at 9:38 am #639700Hi Basilis, I tried, but it doesn’t work in the front-end. It only works it it stays in woocommerce original folder.
May 30, 2016 at 12:17 pm #640265Hi,
ask WooCommerce support about how to use this inside your child theme. They know their plugin best.
Best regards,
AndyMay 30, 2016 at 8:41 pm #640559Hi Andy, I think I got it! Since it may serve for others I report here the procedure I adopted. Maybe you can also answer to a question (see at the bottom of the codes)
First of all I created a new function on the file class-wc-product-variation.php that is found in woocommerce/includes/
The function is more or less the modified copy of the get_formatted_name at line 741 of the file. My new function is called get_formatted_variations_name and returns a string which gives the title of the variation and the price. Here it is:STEP 1
/** * Get product variation name. Used within admin. * * @return string Formatted product name, including attributes and price */ public function get_formatted_variations_name() { if ( $this->get_sku() ) { $identifier = $this->get_sku(); } else { $identifier = ''; } $formatted_attributes = $this->get_formatted_variation_attributes( true ); $variation_name = substr($formatted_attributes, 27); $extra_data = $variation_name . ' – ' . wc_price( $this->get_price() ); return sprintf( __( '%s', 'woocommerce' ), $extra_data ); }
STEP 2)
I created a new avia element called “calendar’ in which I call the function stated before, together with the stock data in a loop, in order to extract all variation for a determined product. In my case the product was called “CSR Expeditions Payment” and the variations are the dates of the cruises. The $loop passes all the products, and before outputting the data I need, I filter the product of interest (in this case CSR Expeditions Payment).<?php if( !class_exists( 'woocommerce' ) ) { add_shortcode('csr_calendar_button', 'avia_please_install_woo'); return; } if ( !class_exists( 'avia_csr_calendar_button' ) ) { class avia_csr_calendar_button extends aviaShortcodeTemplate { /** * Create the config array for the shortcode button */ function shortcode_insert_button() { $this->config['name'] = __('CSR Calendar', 'avia_framework' ); $this->config['tab'] = __('Plugin Additions', 'avia_framework' ); $this->config['icon'] = AviaBuilder::$path['imagesURL']."sc-button.png"; $this->config['order'] = 23; $this->config['target'] = 'avia-target-insert'; $this->config['shortcode'] = 'csr_calendar_button'; $this->config['tooltip'] = __('Display the "CSR Calnedar" button for the current product', 'avia_framework' ); $this->config['drag-level'] = 3; $this->config['tinyMCE'] = array('disable' => "true"); $this->config['posttype'] = array('product',__('This element can only be used on single product pages','avia_framework')); } /** * Editor Element - this function defines the visual appearance of an element on the AviaBuilder Canvas * Most common usage is to define some markup in the $params['innerHtml'] which is then inserted into the drag and drop container * Less often used: $params['data'] to add data attributes, $params['class'] to modify the className * * * @param array $params this array holds the default values for $content and $args. * @return $params the return array usually holds an innerHtml key that holds item specific markup. */ function editor_element($params) { $params['innerHtml'] = "<img />config['icon']."' title='".$this->config['name']."' />"; $params['innerHtml'].= "<div class='avia-element-label'>".$this->config['name']."</div>"; $params['content'] = NULL; //remove to allow content elements return $params; } /** * Frontend Shortcode Handler * * @param array $atts array of attributes * @param string $content text within enclosing form of shortcode element * @param string $shortcodename the shortcode found, when == callback name * @return string $output returns the modified html string */ function shortcode_handler($atts, $content = "", $shortcodename = "", $meta = "") { $output = ""; $meta['el_class']; global $woocommerce, $product; if(!is_object($woocommerce) || !is_object($woocommerce->query) || empty($product)) return; // $product = wc_get_product(); $output .= "<div class='av-woo-calendar-button ".$meta['el_class']."'>"; ob_start();?> <table cellspacing="0" cellpadding="2"> <thead> <tr> <th scope="col" style="text-align:left;"><?php _e('Cruise', 'woothemes'); ?></th> <th scope="col" style="text-align:left;"><?php _e('Places availability', 'woothemes'); ?></th> </tr> </thead> <tbody> <?php $args = array( 'post_type' => 'product_variation', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'DESC', 'meta_query' => array( array( 'key' => '_stock', 'value' => array('', false, null), 'compare' => 'NOT IN' ) ) ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); $product = new WC_Product_Variation( $loop->post->ID ); if (get_the_title( $loop->post->post_parent ) == 'CSR Expeditions Payment') { ?> <tr> <td><?php echo $product->get_formatted_variations_name(); ?></td> <td><?php echo intval ($product->stock); ?></td> </tr> <?php } endwhile; ?> </tbody> </table> <?php $output .= ob_get_clean(); $output .= "</div>"; return $output; } } }
CONSIDERATIONS
1) It seems working by now, but I have to add it AFTER the product purchase button, otherwise the purchase button doesn’t appear… still have to figure out why
2) I still am trying to see where I can save my new function in the child theme folde. I tried to add it to a subfolder woocommerce/includes, but it doesn’t work like that. By now I left the new function in the original woocommerce file class-wc-product-variation.php, but it is not a good solution as if I update the plugin the modifications would be lost. HERE’S MY QUESTION: do you know where I should save it??
Thanks again
Elena- This reply was modified 8 years, 5 months ago by elenapoliti.
May 30, 2016 at 8:44 pm #640564SORRY ANDY, I ANSWERED TO THE WRONG THREAD!!!! PLEASE DELETE MY ANSWER. I AM GOING TO PUBLISH IN THE PROPER ONE!!
May 31, 2016 at 6:09 am #640692Hi,
No problem, so did you manage to solve the problem in this thread?
Regards,
RikardMay 31, 2016 at 7:46 am #640722Hi Rikard, actually I still not solved the problem of woocommerce overriding. It seems that I should copy the WC modified files in my child theme folder, in a path like child-teme/woocommerce/templates/checkout, but it doesn’t work like that.
I worked on modifying another file of woocommerce for my purposes (see wrong answer above) and still have the same problem…
Elena
May 31, 2016 at 11:52 am #640842Hi,
check out this and if you have any more questions feel free to ask WC support about it: https://support.woothemes.com/hc/en-us/articles/203105897-How-to-set-up-and-use-a-child-theme
Best regards,
AndyMay 31, 2016 at 12:10 pm #640855Yes I checked it out thank you. But that is not the case. My child theme works perfectly and my problem doesn’t relate to page templates or style sheet, but only to woocommerce files. I already managed with other themes to override woocommerce files by copying them in the child theme folder in the proper directory as reported in this post https://docs.woothemes.com/document/template-structure/
Unfortunately this time it doesn’t work
May 31, 2016 at 12:14 pm #640862Hi,
does it work for you with a default WP theme?
Best regards,
AndyMay 31, 2016 at 12:29 pm #640872Well it worked with another theme which is older than yours. I guess that I should work somewhere on your config.php for woocommerce, but really don’t know where.
It doesn’t matter. I will keep the modified files in a backup folder and when WC is updated I will substitute the new files with my custom files
May 31, 2016 at 1:16 pm #640899Hi,
alright, good to know that you found a solution for you. Can we close this thread now?
Best regards,
AndyMay 31, 2016 at 1:50 pm #640912yes thanks
June 1, 2016 at 6:21 am #641239 -
AuthorPosts
- The topic ‘Override Woocommerce form-shipping.php file’ is closed to new replies.