Soms is het nodig om het Woocommerce-voorraadbedrag en de voorraadstatus weer te geven op Woocommerce-archiefpagina’s. Daarom zal dit fragment je helpen.
Het zal de voorraad van Woocommerce en de voorraadstatussen als volgt weergeven:
- 25 op voorraad
- Geen voorraad meer
- Op voorraad
- beschikbaar op nalevering
- Voor variabele producten kan het zijn “Op voorraad (sommige artikelen)”
//* Enqueue scripts
add_action( 'wp_enqueue_scripts', 'wpsh_stock_status_archive', 11 );
function wpsh_stock_status_archive() {
// Activate clip styles
wp_enqueue_style( 'wpsh-stock-status-archive-style',
plugins_url( 'clip-style.css', __FILE__ ), array(),
'1.0.0'
);
}
//* Add stock status to archive pages
add_action( 'woocommerce_after_shop_loop_item', 'wpsh_add_stock_status_archive', 3 );
function wpsh_add_stock_status_archive() {
global $product;
$availability = $append = null;
// Add status for single products
if( $product->is_type( 'simple' ) ) {
$availability = $product->get_availability();
$class = $availability[ 'class' ];
$output = $availability[ 'availability' ];
}
// Add status for variable products
elseif( $product->is_type( 'variable' ) ) {
$status = array();
// Get status class for each variation
foreach ( $product->get_children() as $child_id ) {
$variation = $product->get_child( $child_id );
$availability = $variation->get_availability();
// Abandon if stock management is disabled on any variation
if( ! array_filter( $availability ) )
return;
$status[] = $availability[ 'class' ];
}
/**
* Compile final output and class based on
* availability classes set by WooCommerce
*/
if( in_array( 'in-stock', $status ) ) {
$output = __( 'In stock', 'wp-clips' );
$class = 'in-stock';
}
elseif( in_array( 'available-on-backorder', $status ) ) {
$output = __( 'Available on backorder', 'wp-clips' );
$class = 'available-on-backorder';
}
elseif( in_array( 'out-of-stock', $status ) ) {
$output = __( 'Out of stock', 'wp-clips' );
$class = 'out-of-stock';
}
// Append output if some items out of stock or available on backorder
if( ( in_array( 'available-on-backorder', $status ) && $class == 'in-stock' ) ||
( in_array( 'out-of-stock', $status ) && $class != 'out-of-stock' ) )
$append = ' ' . __( '(some items)', 'wp-clips' );
}
// Output only if set
if( isset( $availability ) ){
echo '' . esc_html( $output ) . esc_html( $append ) . '';
}
}
Net als bij de andere fragmenten kun je het aanpassen met dit stukje CSS.
/* Display Woocommerce stock amount and stock status on Woocommerce archive pages */ .archive-stock { font-size: 13px; margin: 5px 0px 10px 0px; }