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?