'ids' ] );
if ( is_wp_error( $brand_ids ) ) return false;
return in_array( (int) MPB_CONTACT_BRAND_ID, array_map( 'intval', (array) $brand_ids ), true );
}
add_filter( 'woocommerce_add_to_cart_validation', 'mpb_block_add_to_cart_for_brand', 10, 3 );
function mpb_block_add_to_cart_for_brand( $passed, $product_id, $quantity ) {
if ( mpb_product_is_contact_brand( $product_id ) ) {
wc_add_notice(
__( 'Ce produit n\'est pas disponible à la vente en ligne. Merci de contacter la boutique au ' . MPB_CONTACT_PHONE, 'mpb' ),
'error'
);
return false;
}
return $passed;
}
add_filter( 'woocommerce_is_purchasable', 'mpb_brand_not_purchasable', 10, 2 );
function mpb_brand_not_purchasable( $purchasable, $product ) {
if ( ! $product ) return $purchasable;
if ( mpb_product_is_contact_brand( $product->get_id() ) ) {
return false;
}
return $purchasable;
}
add_filter( 'woocommerce_product_single_add_to_cart_text', 'mpb_custom_add_to_cart_text', 10, 2 );
add_filter( 'woocommerce_product_add_to_cart_text', 'mpb_custom_add_to_cart_text', 10, 2 );
add_filter( 'woocommerce_loop_add_to_cart_text', 'mpb_custom_add_to_cart_text', 10, 2 );
function mpb_custom_add_to_cart_text( $text, $product = null ) {
if ( ! $product ) {
global $product;
}
if ( ! $product || ! is_object( $product ) ) return $text;
if ( mpb_product_is_contact_brand( $product->get_id() ) ) {
return 'Contacter la boutique';
}
return $text;
}
add_action( 'woocommerce_before_single_product_summary', 'mpb_maybe_replace_single_add_to_cart', 1 );
function mpb_maybe_replace_single_add_to_cart() {
global $product;
if ( ! $product ) return;
if ( ! mpb_product_is_contact_brand( $product->get_id() ) ) return;
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'mpb_render_contact_button', 30 );
}
function mpb_render_contact_button() {
printf(
'%2$s',
esc_attr( MPB_CONTACT_PHONE ),
esc_html__( 'Contacter la boutique', 'mpb' )
);
}
add_action( 'wp_enqueue_scripts', 'mpb_enqueue_contact_brand_script', 20 );
function mpb_enqueue_contact_brand_script() {
$cache_key = 'mpb_contact_brand_product_ids_' . MPB_CONTACT_BRAND_ID;
$product_ids = get_transient( $cache_key );
if ( false === $product_ids ) {
$product_ids = get_posts( [
'post_type' => [ 'product', 'product_variation' ],
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => [
[
'taxonomy' => 'product_brand',
'field' => 'term_id',
'terms' => MPB_CONTACT_BRAND_ID,
'include_children' => false,
],
],
] );
$product_ids = array_map( 'intval', (array) $product_ids );
$product_ids = array_unique( $product_ids );
$product_ids = array_values( $product_ids );
set_transient( $cache_key, $product_ids, 12 * HOUR_IN_SECONDS );
}
wp_register_script( 'mpb-contact-brand', '', [], null, true );
wp_enqueue_script( 'mpb-contact-brand' );
wp_localize_script( 'mpb-contact-brand', 'mpbContactBrand', [
'productIds' => $product_ids,
'phone' => MPB_CONTACT_PHONE,
'phoneHref' => 'tel:' . MPB_CONTACT_PHONE,
'label' => 'Contacter la boutique',
] );
}
add_action( 'save_post_product', 'mpb_clear_contact_brand_cache' );
add_action( 'deleted_post', 'mpb_clear_contact_brand_cache' );
add_action( 'set_object_terms', 'mpb_clear_contact_brand_cache' );
add_action( 'edited_product_brand', 'mpb_clear_contact_brand_cache' );
add_action( 'delete_product_brand', 'mpb_clear_contact_brand_cache' );
function mpb_clear_contact_brand_cache() {
delete_transient( 'mpb_contact_brand_product_ids_' . MPB_CONTACT_BRAND_ID );
}
add_action( 'wp_footer', 'mpb_contact_brand_replacement_js', 100 );
function mpb_contact_brand_replacement_js() {
?>
}
add_action( 'wp_head', 'mpb_contact_button_css' );
function mpb_contact_button_css() {
?>
https://ma-premiere-boutique.com/page-sitemap.xml
2026-04-23T13:39:04+00:00
https://ma-premiere-boutique.com/product-sitemap.xml
2026-04-23T18:24:50+00:00
https://ma-premiere-boutique.com/product_cat-sitemap.xml
2026-04-23T18:24:50+00:00