Skip to content

Instantly share code, notes, and snippets.

@jorpdesigns
jorpdesigns / product-body-class.php
Last active September 20, 2021 13:12
Snippet to add body class on WooCommerce single product page
<?php
add_filter( 'body_class', 'add_product_type_class' );
function add_product_type_class( $classes ) {
if ( is_product() ){
global $product;
$productID = $product->get_id();
// BASED ON PRODUCT TYPE
$productType = get_the_terms( $productID, 'product_type')[0]->slug;
@jorpdesigns
jorpdesigns / product-categories-tags-shippingclass.php
Last active July 8, 2021 19:14
Snippet to get categories, tags and shipping class of a WooCommerce product
<?php
global $product;
$productID = $product->get_id();
$productCategories = get_the_terms( $productID, 'product_cat');
$productTags = get_the_terms( $productID, 'product_tag');
foreach($productCategories as $productCategory) {
$categoryID = $productCategory->term_id;
$categoryName = $productCategory->name;
@jorpdesigns
jorpdesigns / product-conditional-logic.php
Last active July 12, 2021 14:04
Snippet to check WooCommerce product category, tag, sale status, virtual status, downloadable status & type
<?php
global $product;
$productID = $product->get_id();
// CHECK IF PRODUCT BELONGS TO CATEGORY
if ( has_term( 'term', 'product_cat', $productID ) ) { //term can be category name, id, slug or an array of each to check for
// Do something
}
@jorpdesigns
jorpdesigns / product-breadcrumb-separator.php
Created July 6, 2021 14:22
Snippet to change breadcrumb separator on WooCommerce product page
<?php
add_filter( 'woocommerce_breadcrumb_defaults', 'custom_breadcrumb_delimiter' );
function custom_breadcrumb_delimiter( $defaults ) {
$defaults['delimiter'] = ' <i class="far fa-angle-right"></i> '; // Add new separator here
return $defaults;
}
?>
@jorpdesigns
jorpdesigns / product-custom-breadcrumb.php
Created July 6, 2021 14:32
Snippet to modify breadcrumbs on WooCommerce product page
<?php
add_filter( 'woocommerce_get_breadcrumb', 'custom_breadcrumb_urls', 20, 2 );
function custom_breadcrumb_urls( $crumbs, $breadcrumb ){
$customCrumbs = array();
foreach ($crumbs as $key => $crumb) {
$crumbLabel = $crumb[$key][0];
$crumbURL = $crumb[$key][1];
@jorpdesigns
jorpdesigns / product-remove-prettyphoto.php
Created July 6, 2021 18:42
Snippet to remove PrettyPhoto lightbox on WooCommerce product page
<?php
add_action( 'wp_enqueue_scripts', 'remove_woo_lightbox', 99 );
function remove_woo_lightbox() {
if ( is_product() ) {
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
}
}
@jorpdesigns
jorpdesigns / product-custom-price-display.php
Created July 6, 2021 18:47
Snippet to modify WooCommerce product price display
<?php
add_filter( 'woocommerce_get_price_html', 'custom_price_display', 10, 2 );
function custom_price_display( $price, $product ) {
// CHANGE FOR ALL PRODUCTS
$price .= ' for each item';
// FOR SPECIFIC PRODUCT
if ( $product->get_id() == 15 ) { // Replace 15 with your product ID
@jorpdesigns
jorpdesigns / replace-main-price-with-variation-price.php
Created July 6, 2021 20:26
Snippet to display variation price in place of parent product price on WooCommerce product page
<?php
// You can add this function to any hook listed here - https://www.businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/
function custom_wc_template_single_price() {
global $product;
if ( $product->is_type('variable') ):
// Main Price
@jorpdesigns
jorpdesigns / display-dynamic-prices.php
Created July 7, 2021 09:57
Snippet to display dynamic prices on WooCommerce product pages
<?php
// You can add this function to any hook listed here - https://www.businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/
function woocommerce_total_product_price() {
global $woocommerce, $product;
if( $product->is_type( 'simple' ) ){
echo '<div class="total-cost-wrapper">Total Cost <span class="dynamic-price">' . get_woocommerce_currency_symbol() . $product->get_price() . '</span></div>';
?>
@jorpdesigns
jorpdesigns / custom-variation-option-labels.php
Last active July 7, 2021 18:37
Snippet to customize variation dropdown option labels on WooCommerce product page
<?php
// THIS SNIPPET ADDS CUSTOM FIELD 'price_per_unit' TO THE OPTION LABEL.
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'custom_dropdown_args_label', 10, 2);
function custom_dropdown_args_label( $html, $args ) {
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );