Home Forums WoodMart support forum New Label automation

New Label automation

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #206494

    prokreeger
    Participant

    Hello,

    I want to automate adding of new label to the product. The label must be visible for 30 days from date the product was created. I have found this code, but I don’t know where it must be added to make it visible on products, categories and widgets like bestsellers and so on.

    add_action( 'woocommerce_before_single_product_summary', 'new_badge_shop_page', 10 );
              
    function new_badge_shop_page() {
       global $product;
       $newness_days = 30;
       $created = strtotime( $product->get_date_created() );
       if ( ( time() - ( 60 * 60 * 24 * $newness_days ) ) < $created ) {
          echo '<span class="new product-label">' . esc_html__( 'New!', 'woocommerce' ) . '</span>';
       }
    }
    #206562

    Hello,

    You can add this code to the functions.php of the child theme. We do not guarantee a smooth and correct performance.

    Best Regards

    #206646

    prokreeger
    Participant

    Hello,

    I added code to function.php and the label appeared on the product page, but not in the place where it should be. It inserted under your code, and when I create a sale, my new label is placed on top of the sale label instead of moving down.

    How can I add my code to the right place (see attached picture).

    Attachments:
    You must be logged in to view attached files.
    #206666

    Eric Watson
    Participant

    We added your code to our function of labels, try deleting your code and adding ours instead.

    
    	function woodmart_product_label() {
    		global $product;
    
    		$output = array();
    
    		$product_attributes = woodmart_get_product_attributes_label();
    		$percentage_label = woodmart_get_opt( 'percentage_label' );
    
    		if ( $product->is_on_sale() ) {
    
    			$percentage = '';
    
    			if ( $product->get_type() == 'variable' && $percentage_label ) {
    
    				$available_variations = $product->get_variation_prices();
    				$max_percentage = 0;
    
    				foreach( $available_variations['regular_price'] as $key => $regular_price ) {
    					$sale_price = $available_variations['sale_price'][$key];
    
    					if ( $sale_price < $regular_price ) {
    						$percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
    
    						if ( $percentage > $max_percentage ) {
    							$max_percentage = $percentage;
    						}
    					}
    				}
    
    				$percentage = $max_percentage;
    			} elseif ( ( $product->get_type() == 'simple' || $product->get_type() == 'external' ) && $percentage_label ) {
    				$percentage = round( ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100 );
    			}
    
    			if ( $percentage ) {
    				$output[] = '<span class="onsale product-label">-' . $percentage . '%' . '</span>';
    			}else{
    				$output[] = '<span class="onsale product-label">' . esc_html__( 'Sale', 'woodmart' ) . '</span>';
    			}
    		}
    		
    		if( !$product->is_in_stock() ){
    			$output[] = '<span class="out-of-stock product-label">' . esc_html__( 'Sold out', 'woodmart' ) . '</span>';
    		}
    
    		if ( $product->is_featured() && woodmart_get_opt( 'hot_label' ) ) {
    			$output[] = '<span class="featured product-label">' . esc_html__( 'Hot', 'woodmart' ) . '</span>';
    		}
    
    		$newness_days = 30;
    		$created = strtotime( $product->get_date_created() );
    		if ( ( time() - ( 60 * 60 * 24 * $newness_days ) ) < $created ) {
    			$output[] = '<span class="new product-label">' . esc_html__( 'New!', 'woocommerce' ) . '</span>';
    		}
    
    		if ( $product_attributes ) {
    			foreach ( $product_attributes as $attribute ) {
    				$output[] = $attribute;
    			}
    		}
    		
    		if ( $output ) {
    			echo '<div class="product-labels labels-' . woodmart_get_opt( 'label_shape' ) . '">' . implode( '', $output ) . '</div>';
    		}
    	}
    #206679

    prokreeger
    Participant

    Thanks a lot))) I am very appreciated for your work. Labels work great in all places.

    P.S.: It would be fine if you added this functional in your theme.

    #206681

    Eric Watson
    Participant

    You are welcome!

    Yes the feature is not bad, we are already discussing the possibility of introducing it in the future, thank you.

    Best Regards

    #217038

    Joie
    Participant

    Hello, I hope the theme can implement this with the option to allow us to define the newness.

    Thank you for your code !

    #217066

    Hello,

    We shall consider adding this feature but do not promise to implement that in the nearest features.

    Best Regards

    #241667

    iamdeveloper
    Participant

    Thumb up! Thanks for the request from prokreeger and the code from eric. Please consider add this as a feature of the theme.

    I’m not using child theme but with code snippets. The code shows error

    The snippet has been deactivated due to an error on line 2:
    Cannot redeclare function woodmart_product_label.

    Can you help?

    #241847

    Hello,

    This feature has been added to the recent version of the theme: https://prnt.sc/vjvsls

    Please make sure you run 5.3.3 version. If you do not, please make the full backup of your site and update it.

    Best Regards

    #241867

    iamdeveloper
    Participant

    Hi Elise,

    Thanks. I aware the product extra opions now in product page too.

    I’m looking for the label automation automate adding of new label to the product. The label must be visible for 30 days from date the product was created.

    #242012

    Hello,

    For now, there is no option to add the label automatically, however, we shall consider adding the feature in the future. We do not promise to implement it in the nearest updates.

    Best Regards

Viewing 12 posts - 1 through 12 (of 12 total)

The topic ‘New Label automation’ is closed to new replies.