删除并替换 woocommerce 添加到购物车按钮
Remove and replace woocommerce add to cart button
我正在研究一个解决方案,我在每个 WooCommerce 产品上都有一个 ACF。当自定义字段不是 NULL
时,它将在之前的“添加到购物车”按钮下方添加一个自定义锚标记。这工作正常,但我无法让它工作,以便在完成上述步骤后,添加到购物车按钮将被挂钩 woocommerce_is_purchasable
删除。总的来说,这可能是个坏主意,因为我已经看到,如果我使用 woocommerce_is_purshable
,并在 woocommerce_after_add_to_cart_button
挂钩之外将其设置为 false,它会同时删除 添加到购物车 按钮和我定制的 订购目录 按钮。
add_filter('woocommerce_after_add_to_cart_button', function () {
$order_a_catalog_url = get_field('order_a_catalog_url', get_the_ID());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
add_filter( 'woocommerce_is_purchasable', '__return_false' );
}
}, 100);
回答后编辑更新的代码。
add_action('woocommerce_simple_add_to_cart', function () {
global $product;
$order_a_catalog_url = get_field('order_a_catalog_url', $product->get_id());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
remove_action('woocommerce_'.$product->get_type().'_add_to_cart', 'woocommerce_'.$product->get_type().'_add_to_cart', 30);
}
});
您可以使用 woocommerce_simple_add_to_cart
操作挂钩删除添加到购物车按钮。检查下面的代码。
add_filter('woocommerce_after_add_to_cart_button', function () {
$order_a_catalog_url = get_field('order_a_catalog_url', get_the_ID());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
}
}, 100);
add_action('woocommerce_simple_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
function wc_68661105_remove_add_to_cart_buttons_single(){
global $product;
$order_a_catalog_url = get_field( 'order_a_catalog_url', $product->get_id() );
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
remove_action( 'woocommerce_'.$product->get_type().'_add_to_cart', 'woocommerce_'.$product->get_type().'_add_to_cart', 30 );
}
}
如果您还想删除 variable
、external
和 grouped
产品类型的添加到购物车按钮,则以下操作适用于其他产品类型。
add_action('woocommerce_variable_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
add_action('woocommerce_external_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
add_action('woocommerce_grouped_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
代码将进入活动主题 functions.php 文件。测试和工作。
我正在研究一个解决方案,我在每个 WooCommerce 产品上都有一个 ACF。当自定义字段不是 NULL
时,它将在之前的“添加到购物车”按钮下方添加一个自定义锚标记。这工作正常,但我无法让它工作,以便在完成上述步骤后,添加到购物车按钮将被挂钩 woocommerce_is_purchasable
删除。总的来说,这可能是个坏主意,因为我已经看到,如果我使用 woocommerce_is_purshable
,并在 woocommerce_after_add_to_cart_button
挂钩之外将其设置为 false,它会同时删除 添加到购物车 按钮和我定制的 订购目录 按钮。
add_filter('woocommerce_after_add_to_cart_button', function () {
$order_a_catalog_url = get_field('order_a_catalog_url', get_the_ID());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
add_filter( 'woocommerce_is_purchasable', '__return_false' );
}
}, 100);
回答后编辑更新的代码。
add_action('woocommerce_simple_add_to_cart', function () {
global $product;
$order_a_catalog_url = get_field('order_a_catalog_url', $product->get_id());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
remove_action('woocommerce_'.$product->get_type().'_add_to_cart', 'woocommerce_'.$product->get_type().'_add_to_cart', 30);
}
});
您可以使用 woocommerce_simple_add_to_cart
操作挂钩删除添加到购物车按钮。检查下面的代码。
add_filter('woocommerce_after_add_to_cart_button', function () {
$order_a_catalog_url = get_field('order_a_catalog_url', get_the_ID());
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
}
}, 100);
add_action('woocommerce_simple_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
function wc_68661105_remove_add_to_cart_buttons_single(){
global $product;
$order_a_catalog_url = get_field( 'order_a_catalog_url', $product->get_id() );
$order_a_catalog_name = __('Order A Catalog', 'wp');
if ($order_a_catalog_url != null) {
echo '<a class="button" href="'.$order_a_catalog_url.'">'.$order_a_catalog_name.'</a>';
remove_action( 'woocommerce_'.$product->get_type().'_add_to_cart', 'woocommerce_'.$product->get_type().'_add_to_cart', 30 );
}
}
如果您还想删除 variable
、external
和 grouped
产品类型的添加到购物车按钮,则以下操作适用于其他产品类型。
add_action('woocommerce_variable_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
add_action('woocommerce_external_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
add_action('woocommerce_grouped_add_to_cart', 'wc_68661105_remove_add_to_cart_buttons_single' );
代码将进入活动主题 functions.php 文件。测试和工作。