Support

Account

Home Forums Search Search Results for 'woocommerce'

Search Results for 'woocommerce'

reply

  • Where is your field located?
    Options will work with parameter ‘option’,
    if its Product/Page specific you need Prduct/Page ID then use ID as parameter,
    also have in mind that WooCommerce could have more that one notification (Cancel, Pending, Complete order…)

    Get value from another post or Get value from Options page

    From WooCommerce website:
    Woocommerce how to customize emails in WooCommerce

  • Here is an explanation of how to add extra fields to these tabs in WC https://awhitepixel.com/blog/woocommerce-product-data-custom-fields-tabs/

    Rather than added WC fields with WC functions you and have your action call acf_form() https://www.advancedcustomfields.com/resources/acf_form/ to display ACF fields in the tabs with 'form' => false

  • Hi @igeeksupport ,

    It is becuase our fields are not text but has options.
    Here is right code which worked for me.
    You can change EAN and Brand according to your fields names.

    /**
     * Add the custom tab
     */
    function my_simple_custom_product_tab( $tabs ) {
    		// Adds the new tab
    	if(get_field('ean')) //if there is custom field for this product, then show this tab
    	$tabs['my_custom_tab'] = array(
    		'title'    => __( 'Bran and EAN', 'textdomain' ), //You can change Brand and EAN as you wish
    		'callback' => 'my_simple_custom_tab_content',
    		'priority' => 50,
    	);
    
    	return $tabs;
    
    }
    add_filter( 'woocommerce_product_tabs', 'my_simple_custom_product_tab' );
    
    /**
     * Function that displays output for the tab.
     */
    function my_simple_custom_tab_content($slug, $tab ) {
    ?><h2><?php echo wp_kses_post( $tab['title'] ); ?></h2>
    <?php
    $brand= get_field_object('brand');
    $ean= get_field_object('ean');
    echo '<p>' . $brand['label']. ' : '. $brand['value'] .'</p>';
    echo '<p>' . $ean['label']. ' : '. $ean['value'] .'</p>';
    }
  • I use twenty twenty worpdress theme, is it possible this theme is not comaptible with woocommerce product gallery ?

  • No, i’m talking about adding ACF fields inside the order itself. But this ACF fields i have created them as Post Type = Product (Woocommerce) and i want to display some of them inside the order.

  • I have create location rule type, rule values, rule match php code is working when i save the post custom field metabox show that means my custom rule location is working. Conflict is in JS Part for Variation rule only.

    While Editing the post without saving the Metabox show

    But when i choose for variations rule I have to save or update the post. and disable the js by commenting the enqueue input.js

    I want it to be async, just i choose product virtual then the metabox should Show while editing the post

    Conflict is in JS.

    // "Location Rules"
    
    add_filter('acf/location/rule_types', 'wc_product_acf_location_rule_types', 50, 1); 
    add_filter('acf/location/rule_values/woocommerce_product_type', 'wc_product_acf_location_rule_types_woocommerce_product_type', 50, 1);
    add_filter('acf/location/rule_values/woocommerce_variations', 'wc_product_acf_location_rule_types_woocommerce_variations', 50, 1);
    /*--------------------------------------------*/
    
    // Rule Validation
    
    add_filter('acf/location/rule_match/woocommerce_product_type', 'rule_match_woocommerce_product_type', 50, 3); // Rule match tester for when the post edit page is loaded
    add_filter('acf/location/rule_match/woocommerce_variations', 'rule_match_woocommerce_bools', 50, 3);
    
    /*-----------------------------------------------*/
    
    add_filter('acf/location/screen', 'wc_acf_location_parse_types', 1, 1);
    
    // Position Rules
    add_action('acf/create_field', 'wc_product_acf_location_rule_types_create_field', 4, 1);
    
    function wc_acf_location_parse_types( $value ) {
        if(is_array($value) && !empty($value) && isset($value['post_id']) && $value['post_id'] != 0) {
            if(!array_key_exists('woocommerce_product_type', $value) && array_key_exists('post_id', $value) && array_key_exists('post_type', $value) && $value['post_type'] == "product") {
                // Get Product
                $product = wc_get_product($value['post_id']);
    
                // Woocommerce Product Variables
                $value['woocommerce_product_type'] = $product->get_type();
                $value['woocommerce_is_in_stock'] = $product->get_stock_status();
                $value['woocommerce_is_downloadable'] = $product->is_downloadable(); 
                $value['woocommerce_is_virtual'] = $product->is_virtual();
                $value['woocommerce_is_sold_individually'] = $product->is_sold_individually();
            }
        }
    
    function wc_product_acf_location_rule_types($choices) {    
        $choices[__("Woocommerce")] = array(
            'woocommerce_product_type' => __("Product Type", 'acf'),
            'woocommerce_variations' => __("Product Variations", 'acf'),
        );
        return $choices;
    }
    
    function wc_product_acf_location_rule_types_woocommerce_product_type($choices) {
        $choices = wc_get_product_types();
        return $choices;
    }
    
    function wc_product_acf_location_rule_types_woocommerce_variations($choices) {
        $choices = array(
            'is_downloadable'       => 'Downloadable',
            'is_virtual'            => 'Virtual',
        );
    
        return $choices;
    }
    
    function rule_match_woocommerce_product_type($match, $rule, $options) {
        if(isset($options['post_type']))
            $post_type = $options['post_type'];
        else
        {
            if(isset($options['post_id'])) {
                $post_type = get_post_type($options['post_id']);
            }
            return false;
        }
        // Ensure is a product
        if( $post_type != 'product') {
            return false;
        }
        // Ensure Product Type has been set
        if(!array_key_exists('woocommerce_product_type', $options)) {
            return false;
        }
        if($rule['operator'] == "==") {
            $match = ( $options['woocommerce_product_type'] === $rule['value'] );
        }
        elseif($rule['operator'] == "!=") {
            $match = ( $options['woocommerce_product_type'] !== $rule['value'] );
        }
        return $match;
    }
    
    function rule_match_woocommerce_bools($match, $rule, $options) {
        $post_type = $options['post_type'];
        if(!$post_type) {
            if(!$options['post_id']) {
                return false;
            }
            $post_type = get_post_type($options['post_id']);
        }
        // Ensure is a product
        if( $post_type != 'product') {
            return false;
        }
        if(!array_key_exists('woocommerce_is_virtual', $options) && !array_key_exists('value', $rule)) {
            return false;
        }
        $key = 'woocommerce_' . $rule['value'];
        if($rule['operator'] == "==") {
            $match = ( $options[$key] === true);
        }
        elseif($rule['operator'] == "!=") {
            $match = ( $options[$key] !== true );
        } 
        return $match;
    }
    
    function wc_product_acf_location_rule_types_create_field($fields) {
        $fields['choices']['woocommerce_products_general_tab'] = __('Woocommerce Products General Tab', 'acf');
        // if($fields['name'] == 'options[position]') {
        //  _d($fields);
        // }
    
        return $fields;
    }

    The only part which is not working is the JS part but for product type rule it is working suppose my rule is show on grouped product, if i change my product type then the custon field show while editing the post due js part but not working for other rule

    add_action('acf/input/admin_enqueue_scripts', 'acf_wc_input_admin_enqueue_scripts', 10); // Enque JS
    
    function acf_wc_input_admin_enqueue_scripts() {
    
        $settings = array(
            'path' => plugins_url(basename(__DIR__)),
            'dir' => apply_filters('acf/helpers/get_dir', __DIR__),
            'version' => '1.0.3'
        );
        // register acf scripts
        wp_register_script( 'acf-wc-input-product-type-locations', $settings['path'] . '/js/input.js', array('acf-input'), $settings['version'] );
        // scripts
        wp_enqueue_script('acf-wc-input-product-type-locations');
    }

    Here my js part

    
        $(document).ready(function(){
            if (typeof acf == 'undefined') { return; }
        });
    
        $(document).on('change', '#product-type', function(){
            acf.ajax.update('woocommerce_product_type', $(this).val()).fetch();
        });
    
        $(document).on('change', '#_virtual, #_downloadable, function() {
            acf.ajax.update( 'woocommerce_is' + $(this).attr('name'), ($(this).is(':checked'))).fetch();
            $(document).trigger('acf/update_field_groups');
        });
    

    Js part on change for product type is working but for not working for _virtial, _downloadable

    Please anwser the question even some people tried find other solution or upgrade to this code.

  • Because in WP this user does not have permission to add attachments whatever WooCommerce uses to store the account details. Yes, sometimes the rules can be tricky.

    I don’t know how to accomplish this. You need to find a way to give users the permission to do this. I would start by asking WC if it is possible to alter permissions to the user profile to allow users to attach files to their own profile.

  • How to get woocommerce product in the 4 columns in frontend homepage. I’m using a template file. Can you send me to code how show product in frontside?

    I’m using Field Type: Post Object.

    I have attached screenshot, please check.
    Thank you in advance.

    custom-filds….png

    product-list….png

    having problem like this .

  • Hello,

    i try to add values to woocommerce product permalink.

    my code :

    //add rewrite rules 
    function product_add_rewrite_rules() {
    	global $wp_rewrite;
        
    	$wp_rewrite->add_rewrite_tag('%product%', '([^/]+)', 'product=');
    	$wp_rewrite->add_rewrite_tag('%subtitle%', '([^/]+)', 'subtitle=');
    	$wp_rewrite->add_rewrite_tag('%artiste%', '([^/]+)', 'artiste=');
    	$wp_rewrite->add_rewrite_tag('%numero_de_page%', '([^/]+)', 'numero_de_page=');
    	$wp_rewrite->add_permastruct('product', '/catalogue/%artiste%-%product%-%subtitle%-page-%numero_de_page%/', false);
        
        $wp_rewrite->flush_rules();
    }
    add_action('init', 'product_add_rewrite_rules', 10, 0);
    
    // replace the rwrite tag by the content
    function product_permalinks($permalink, $post, $leavename) {
    	$post_id = $post->ID;
    
    	if ($post->post_type == 'product') {
    		$subtitle = sanitize_title(get_field('subtitle', $post_id));
    		$artiste = get_field('artiste', $post_id);
            $artistesurname = sanitize_title($artiste->name);
    		$pagenumber = sanitize_title(get_field('numero_de_page', $post_id));
    		if ($artiste) { 
    			$permalink = str_replace('%artiste%', $artistesurname, $permalink);
    		} else {
    			$permalink = str_replace('%artiste%', 0, $permalink);
    		}
            if ($subtitle) { 
    			$permalink = str_replace('%subtitle%', $subtitle, $permalink);
    		} else {
    			$permalink = str_replace('%subtitle%', 0, $permalink);
    		}
            if ($pagenumber) { 
    			$permalink = str_replace('%numero_de_page%', $pagenumber, $permalink);
    		} else {
    			$permalink = str_replace('%numero_de_page%', 0, $permalink);
    		}
    	}
    
    	return $permalink;
    }
    add_filter('post_type_link', 'product_permalinks', 10, 3);
    

    In the backend it’s showing the change :
    permalink display in the backend

    But in frontend i get a 404. I tried on an other custom post and i get the same.
    Anyone had already the same problem ?

    Thanks in advance,

    Simon

  • I recommend the WP All Import plugin along with its ACF add-on and WooCommerce add-on. I use those plugins all the time to import data and it’s always worked out great!

  • Hello again,

    I found a solution for this issue without ACF. Using the code that you can find here, the issue is the same, but if you change the priority to the ‘woocommerce_process_shop_order_meta’ add_action to ‘1’, the issue is solved.

    I asked to myself (and to you) if there is any way to solve this issue using ACF.

    Thanks all

  • it seems that this end point is not editable:
    /wp-json/acf/v3/{taxonomy}/{id}

    The end point I tried to use is:
    https://mysite.com/wp-json/acf/v3/categories/123
    (Is there a specific end-point for woocommerce categories for example like: https://mysite.com/wp-json/acf/v3/product/categories/123 ???)

    If I make a GET call of the url (https://mysite.com/wp-json/acf/v3/categories/123), the response is:
    {“acf”:{“title_01″:”My title”,”text_01″:”My text”,}}

    With POST or PUT call the response is:
    {“code”:”cant_update_item”,”message”:”Cannot update item”,”data”:{“status”:500}}

    My WP version is: 5.3.2
    My Advanced Custom Fields PRO version is 5.8.8

    Please help…..

  • John, and those struggling to piece together the different parts of this solution together, Here is how to display it on the ‘single-product.php’ page.

    Add the following, or similar, function to ‘functions.php’.

    /*----------------------------------------------*/
    /* Displays ACF fields 'Frame Type' and 'Lens Type' 
    /* Displays on SINGLE PRODUCT page and QUICK VIEW via archive
    /* DEPENDENCIES: ACF Custom Fields
    /* $variations are outputted by "variation.php"
    /*----------------------------------------------*/
    function frame_style_lens_colour ( $variations ) {
    	$variations['frame_type'] = get_field('frame_type', $variations[ 'variation_id' ]);
    	$variations['lens_type'] = get_field('lens_type', $variations[ 'variation_id' ]);
    	
    	return $variations;
    }
    add_filter ( 'woocommerce_available_variation', 'frame_style_lens_colour ', 10, 1 );

    THEN copy ‘variation.php’ to your theme or child theme.
    Add the following to the file, or similar, and save it:

    <p><strong>Lens Style:</strong> {{{ data.variation.lens_type }}} Polarized Lens </p>
    <p><strong>Frame Style:</strong> {{{ data.variation.frame_type }}} </p>

    Now your variation specific ACF fields will appear on the front end of the website.

  • John, and those struggling to piece together the different parts of this solution together, Here is how to display it on the ‘single-product.php’ page.

    Add the following, or similar, function to ‘functions.php’.

    /*----------------------------------------------*/
    /* Displays ACF fields 'Frame Type' and 'Lens Type' 
    /* Displays on SINGLE PRODUCT page and QUICK VIEW via archive
    /* DEPENDENCIES: ACF Custom Fields
    /* $variations are outputted by "variation.php"
    /*----------------------------------------------*/
    function frame_style_lens_colour ( $variations ) {
    	$variations['frame_type'] = get_field('frame_type', $variations[ 'variation_id' ]);
    	$variations['lens_type'] = get_field('lens_type', $variations[ 'variation_id' ]);
    	
    	return $variations;
    }
    add_filter ( 'woocommerce_available_variation', 'frame_style_lens_colour ', 10, 1 );

    THEN copy ‘variation.php’ to your theme or child theme.
    Add the following to the file, or similar, and save it:

    <p><strong>Lens Style:</strong> {{{ data.variation.lens_type }}} Polarized Lens </p>
    <p><strong>Frame Style:</strong> {{{ data.variation.frame_type }}} </p>

    Now your variation specific ACF fields will appear on the front end of the website.

  • This is my solution that saves the value.

    add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' );
    function add_favorite_color_to_edit_account_form() {
        acf_form_head();
    
        $current_user = wp_get_current_user();
    	$options = array(
    		    'post_id' => 'user_'.$current_user->ID,
    		    'field_groups' => array(111),
    		    'form' => true, 
    		    'return' => add_query_arg( 'updated', 'true', get_permalink() ), 
    		    'html_before_fields' => '',
    		    'html_after_fields' => '',
    		    'submit_value' => 'Update' 
    		);
    		acf_form( $options );
    }
  • Topic solved…
    I changed the return value to “ID” instead of Object.
    Now woocommerce attributes are changed as I wanted 🙂

  • Thanks for answering but I need to display woocommerce products in front side.
    see the screenshot.

  • Hi there

    I hope you can help me: ACF does not pick up the field names automatically.

    I’ve created ACF fields with identical names to my core wp fields. They are all text fields. I have set the field group to “product”, as they are all WooCommerce products.

    However, even if I save the posts, the ACF fields do not update. I’m using version 5.8.7.

    Any advice?

  • Although this is from 2017, thanks John for the idea!

    It might be helpful to others, that the existence of a custom option for the checkbox field is accessible from the field variable.

    In class-acf-field-checkbox.php within function update_value() you will find

    // save_other_choice
    if( $field['save_custom'] ) {
    ... 

    Since the select field does not have an option for custom values, you have to check for the text field ‘other, as described by John.

    I had trouble accessing the value of this field when working with the acf/update_value filter, since I can only check for either the select field or the custom text field. get_field() will pull the field value from database, the value that was just posted is within the array and I was not sure how to control wich field will be processed first.

    acf/save_post is the filter that allows access to all posted values.

    However, the $_POST variable delivers just the field keys (like field_1e6543821dge2) and their posted values. So I have to know wich field is the select field and wich is the custom text field. At this point, it would be extremely helpful to have the $field[‘save_custom’] value set, like it is for the checkboxes.

    My workaround, which unfortunately needs to check for the exact field keys is as follows. Biggest diadvantage is that whenever I change the fields in WordPress backend, I need to change the code. If someone had an idea how to make this approach more generic, help would be appreciated. I put the code inside a plugin, so setting up an option page would be reasonable to assign custom fields to select fields.

    However, I hope that we will see the select fields featuering custom values, soon!

    Please note that the following code is used within a WooCommerce site, so please check your post_type!

    
    
    function my_custom_select_field( $post_id ) {
    
        $new_custom_values = array();
        $repeater_key   = 'field_1e6543821dge2'; // in my case, select field is inside a repeater field
        $select_key     = 'field_1e72471e52424';
        $custom_key     = 'field_1e82477957985';
        
        // not a product, not our business
        if( 'product' != get_post_type( $post_id ) ) return;
        
        // not generic yet... check for specific field or leave 
        if ( !( $_POST['acf'][$repeater_key] && is_array($_POST['acf'][$repeater_key]) ) ) return;
    
        // STEP 1:
        // if cusotm values are submitted, just move them to our select field
        //
    
        $repeater_field = $_POST['acf'][$repeater_key];
    
        // check if we have a custom value
        foreach ( $repeater_field as $row => $repeaters) {
            if ( ( ( $repeaters[$select_key] === 'custom' ) ) && ( !empty( $repeaters[$custom_key] ) ) ) {
    
                // assign custom value to our actual select field
                $repeater_field[$row][$select_key] = $repeaters[$custom_key];
    
                // gather new custom values to update select field
                $new_custom_values[] = $repeaters[$custom_key];
    
                // clear the custom field, no need to keep it
                $repeater_field[$row][$custom_key] = '';
    
            }
        }
    
        // save modified values to actual POST, please note that no return value is neccessary since this
        // filters the $_POST wich will be processed afterwards
        $_POST['acf'][$repeater_key] = $repeater_field;
    
        // STEP 2:
        // lets go update the select field to have our new custom options available
        //
    
        // if there are no custom values, leave it
        if ( empty($new_custom_values ) ) return;
    
        // otherwise, we need our raw select field from db
        $field = acf_get_field( $select_key, true );
    
        // bail early if no ID (JSON only)
        if( !$field['ID'] ) return;
    
        // loop through custom values
        foreach ( $new_custom_values as $v ) {
    
            // ignore if already eixsts
            if( isset($field['choices'][ $v ]) ) continue;
            
            
            // unslash (fixes serialize single quote issue)
            $v = wp_unslash($v);
            
            
            // sanitize (remove tags)
            $v = sanitize_text_field($v);
            
            
            // append
            $field['choices'][ $v ] = $v;
            
        }
             
        // save
        acf_update_field( $field );
    
    }
    
    add_filter('acf/save_post', 'my_custom_select_field', 5, 1); // priority < 10 = filter before db update
    
  • Although this is from 2017, thanks John for the idea!

    It might be helpful to others, that the existence of a custom option for the checkbox field is acessible from the field variable.

    In class-acf-field-checkbox.php within function update_value() you will find

    // save_other_choice
    if( $field['save_custom'] ) {
    ... 

    Since the select field does not have an option for custom values, you have to check for the text field ‘other, as described by John.

    I had trouble accessing the value of this field when working with the acf/update_value filter, since I can only check for either the select field or the custom text field. get_field() will pull the field value from database, the value that was just posted is within the array and I was not sure how to control wich field will be processed first.

    acf/save_post is the filter that allows access to all posted values.

    However, the $_POST variable delivers just the field keys (like field_1e6543821dge2) and their posted values. So I have to know wich field is the select field and wich is the custom text field. At this point, it would be extremely helpful to have the $field[‘save_custom’] value set, like it is for the checkboxes.

    My workaround, which unfortunately needs to check for the exact field keys is as follows. Biggest diadvantage is that whenever I change the fields in WordPress backend, I need to change the code. If someone had an idea how to make this approach more generic, help would be appreciated. I put the code inside a plugin, so setting up an option page would be reasonable to assign custom fields to select fields.

    However, I hope that we will see the select fields featuering custom values, soon!

    Please note that the following code is used within a WooCommerce site, so please check your post_type!

    
    
    function my_custom_select_field( $post_id ) {
    
        $new_custom_values = array();
        $repeater_key   = 'field_1e6543821dge2'; // in my case, select field is inside a repeater field
        $select_key     = 'field_1e72471e52424';
        $custom_key     = 'field_1e82477957985';
        
        // not a product, not our business
        if( 'product' != get_post_type( $post_id ) ) return;
        
        // not generic yet... check for specific field or leave 
        if ( !( $_POST['acf'][$repeater_key] && is_array($_POST['acf'][$repeater_key]) ) ) return;
    
        // STEP 1:
        // if are cusotm values submitted, just move them to our select field
        //
    
        $repeater_field = $_POST['acf'][$repeater_key];
    
        // check if we have a custom value
        foreach ( $repeater_field as $row => $repeaters) {
            if ( ( ( $repeaters[$select_key] === 'custom' ) ) && ( !empty( $repeaters[$custom_key] ) ) ) {
    
                // assign custom value to our actual select field
                $repeater_field[$row][$select_key] = $repeaters[$custom_key];
    
                // gather new custom values to update select field
                $new_custom_values[] = $repeaters[$custom_key];
    
                // clear the custom field, no need to keep it
                $repeater_field[$row][$custom_key] = '';
    
            }
        }
    
        // save modified values to actual POST, please note that no return value is neccessary since this
        // filters the $_POST wich will be processed afterwards
        $_POST['acf'][$repeater_key] = $repeater_field;
    
        // STEP 2:
        // lets go update the select field to have our new custom options available
        //
    
        // if there are no custom values, leave it
        if ( empty($new_custom_values ) ) return;
    
        // otherwise, we need our raw select field from db
        $field = acf_get_field( $select_key, true );
    
        // bail early if no ID (JSON only)
        if( !$field['ID'] ) return;
    
        // loop through custom values
        foreach ( $new_custom_values as $v ) {
    
            // ignore if already eixsts
            if( isset($field['choices'][ $v ]) ) continue;
            
            
            // unslash (fixes serialize single quote issue)
            $v = wp_unslash($v);
            
            
            // sanitize (remove tags)
            $v = sanitize_text_field($v);
            
            
            // append
            $field['choices'][ $v ] = $v;
            
        }
             
        // save
        acf_update_field( $field );
    
    }
    
    add_filter('acf/save_post', 'my_custom_select_field', 5, 1); // priority < 10 = filter before db update
    
  • Finally got this one solved. In my case, I was enhancing the WooCommerce Quick View Pro plugin. That plugin does not create a modal until AFTER the DOM has been rendered. However, the ACF jQuery file is loaded in the DOM before the modal is created. The solution for Quick View Pro is to load that jQuery after we generate the HTML.

    I solved this by including the jQuery, e.g., after the ACF div containers were rendered. Here’s an example:

      /*
       * Display a map (saved from Advanced Custom Fields) in Quick View Pro modal
       * Documentation: https://battlestardigital.com/adding-advanced-custom-fields-google-maps-to-woocommerce-quick-view-pro/
       * HTML Source: https://www.advancedcustomfields.com/resources/google-map/
      */
      private function bsd_qvp_display_map( $map) {
        if ( $map ) {
          ?>
          <div id="map" class="acf-map">
            <div class="marker" data-lat="<?php echo esc_attr($map['lat']); ?>" data-lng="<?php echo esc_attr($map['lng']); ?>"></div>
          </div>
          <script>
          <?php        
            include_once get_stylesheet_directory() . '/bsd-maps.js'; // Assumes you've made a copy of the ACF JavaScript field and placed it in your child theme folder
            //include_once dirname( BSD_WC_QVP_PATH ) . '/assets/bsd-maps.js'; // Use this syntax if you're storing the file elsewhere, e.g., your plugin
          ?>
          </script>
          <?php      
        }
        
      }
    

    P.S. The link to my test site changed to https://wp.battlestardigital.com/quick-view-pro-test-page/

  • Hi guys. Here are some tutorials on how to bulk edit Advanced Custom Fields in multiple ways:
    – inside WP using a quick table
    – Or in excel/google sheets using an export/import
    – how to edit all the field types

    Edit ACF Fields in Posts

    Edit ACF Fields in User Profiles

    Edit ACF Fields in WooCommerce products

  • Hay James, You have shared very helpful plugin, Actuality i am a co founder of one of the famous booking site and i am using booking fitter plugin for the ease my visitors. Ver effective and very easy to use.

  • I think I should use wc_get_orders() instead of get_posts() in my code:
    https://github.com/woocommerce/woocommerce/wiki/wc_get_orders-and-WC_Order_Query

    I will try it tomorrow.
    But any help is still much appreciated.

  • Hi
    I have added the ACF for schema structured data (on products in WooCommerce) but it does not show up in the structured data testing tool.
    I have looked through the documentation and I can’t make head nor tail of it.
    Any advice of what I need to get it to show up in the structured data testing tool

Viewing 25 results - 551 through 575 (of 889 total)