Я пытаюсь удалить класс с помощью кнопки в woocommerce, которая находится в файле wc_cart_functions.php. Существует строка в функции wc_add_to_cart_message
, которая вставляет эту строку:Добавить фильтр для изменения определенной части функции
<a href="%s" class="button wc-forward">%s</a> %s
function wc_add_to_cart_message($products, $show_qty = false) {
$titles = array();
$count = 0;
if (! is_array($products)) {
$products = array($products);
$show_qty = false;
}
if (! $show_qty) {
$products = array_fill_keys(array_keys($products), 1);
}
foreach ($products as $product_id => $qty) {
$titles[] = ($qty > 1 ? absint($qty) . ' × ' : '') . sprintf(_x('“%s”', 'Item name in quotes', 'woocommerce'), strip_tags(get_the_title($product_id)));
$count += $qty;
}
$titles = array_filter($titles);
$added_text = sprintf(_n('%s has been added to your cart.', '%s have been added to your cart.', $count, 'woocommerce'), wc_format_list_of_items($titles));
// Output success messages
if ('yes' === get_option('woocommerce_cart_redirect_after_add')) {
$return_to = apply_filters('woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect(wc_get_raw_referer(), false) : wc_get_page_permalink('shop'));
$message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', esc_url($return_to), esc_html__('Continue Shopping', 'woocommerce'), esc_html($added_text));
} else {
$message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', esc_url(wc_get_page_permalink('cart')), esc_html__('View Cart', 'woocommerce'), esc_html($added_text));
}
wc_add_notice(apply_filters('wc_add_to_cart_message', $message, $product_id));
}
Я пытался создать фильтр, который будет просто заменить эту конкретную строку, так как она появляется дважды, и в обоих случаях я хочу класс удален. Это не похоже на работу, хотя:
add_filter('wc_add_to_cart_message', 'add_to_cart_mod');
function add_to_cart_mod($message) {
$message = str_replace ('<a href="%s" class="button wc-forward">%s</a> %s' , '<a href="%s" class="button">%s</a> %s', $message);
return $message;
}
С этим набором фильтров, как это, я все еще вижу кнопку с тем же неизменным классом. Есть предположения?
Благодаря @trincot. Это полностью удаляет свойство класса. Пара вопросов о вашем ответе; что (] +), а также то, что означает $ 1? – antonanton
Я исправил это: теперь класс заменяется. Я также добавил объяснения. – trincot
благодарим вас за объяснение! – antonanton