Custom product layout/loop

Developer level documentation. This is an advanced guide to customize the product loop. PHP knowledge is needed for a correct implementation.

So you’d like to display your products in a custom way? The Availability Search for WooCommerce Bookings will use your themes’s product layout by default. Here’s how to customize it!

Starter Add-on plugin to display a custom loop for ASWB

We’ve put together an example plugin which you can find here https://github.com/puri-io/availability-search-custom-product-display

We’ve included an easy filter to override the default product display. You Drop it into your child theme functions.php or a custom plugin. Use our aswb_display_products filter just like the example below:

/*
 * Override the Availability Search for WooCommerce bookings product display
 * This example is simple and doesn't include any product details.
 */ 

function aswb_custom_filter_product_display( $product_id ) {

// Use $product_id to get the product object, then you can access any data you'd like.
$product = wc_get_product( $product_id );

// Anything you and here must be returned, so it can be used for each product. This will display each name of the products

$output = "<h3>$product->get_name()</h3>";

return $output;

}
add_filter('aswb_display_products','aswb_custom_filter_product_display' );

Get product details

Make sure to first call the WooCommerce Product object like so:

$product = wc_get_product( $product_id );

You can now access any of the product details by using the below functions.

// Get Product ID
 $product->get_id(); (fixes the error: "Notice: id was called 
incorrectly. Product properties should not be accessed directly")

 // Get Product General Info
 $product->get_type();
 $product->get_name();
 $product->get_slug();
 $product->get_date_created();
 $product->get_date_modified();
 $product->get_status();
 $product->get_featured();
 $product->get_catalog_visibility();
 $product->get_description();
 $product->get_short_description();
 $product->get_sku();
 $product->get_menu_order();
 $product->get_virtual();
 get_permalink( $product->get_id() );

 // Get Product Prices
 $product->get_price();
 $product->get_regular_price();
 $product->get_sale_price();
 $product->get_date_on_sale_from();
 $product->get_date_on_sale_to();
 $product->get_total_sales();

 // Get Product Tax, Shipping & Stock
 $product->get_tax_status();
 $product->get_tax_class();
 $product->get_manage_stock();
 $product->get_stock_quantity();
 $product->get_stock_status();
 $product->get_backorders();
 $product->get_sold_individually();
 $product->get_purchase_note();
 $product->get_shipping_class_id();

 // Get Product Dimensions
 $product->get_weight();
 $product->get_length();
 $product->get_width();
 $product->get_height();
 $product->get_dimensions();

 // Get Linked Products
 $product->get_upsell_ids();
 $product->get_cross_sell_ids();
 $product->get_parent_id();
 // Get Product Variations
 $product->get_attributes();
 $product->get_default_attributes();
 // Get Product Taxonomies
 $product->get_categories();
 $product->get_category_ids();
 $product->get_tag_ids();

 // Get Product Downloads
 $product->get_downloads();
 $product->get_download_expiry();
 $product->get_downloadable();
 $product->get_download_limit();

 // Get Product Images
 $product->get_image_id();
 get_the_post_thumbnail_url( $product->get_id(), 'full' );
 $product->get_gallery_image_ids();

 // Get Product Reviews
 $product->get_reviews_allowed();
 $product->get_rating_counts();
 $product->get_average_rating();
 $product->get_review_count();

// Latest updates can be found at https://docs.woocommerce.com/wc-apidocs/class-WC_Product.htm
Was this page helpful?