WooCommerce добавить атрибут данных для просмотра кнопки корзины в сообщении об успехе

Мне удалось изменить HTML-разметку Просмотр корзины кнопка на сообщение об успехе, чтобы я мог добавить id="open_cart" к нему, но я также хочу добавить атрибут данных, такой как data-cart="open" к выводу html, однако только id возвращается

Любые идеи о том, как добавить data- приписать это?

function my_add_to_cart_message() {
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) :

$message = sprintf( '%s<a id="open_cart" data-target="open-cart"  href="%s" class="button">%s</a>', __( 'Successfully added to cart.' , 'woocommerce' ), esc_url( get_permalink( woocommerce_get_page_id( 'cart' ) ) ), __( 'View Cart', 'woocommerce' ) );

return $message;

}
add_filter( 'wc_add_to_cart_message', 'my_add_to_cart_message' );

Вот что возвращает функция выше:

<a id="open_cart" href="http://example.com/cart/" class="button wc-forward">Ver carrinho</a>

data-cart="open" игнорируется Просто раздражает.

2

Решение

Вот краткое объяснение того, почему это происходит.

Взгляните на Woocommerce Success.php шаблон, который отвечает за отображение сообщений об успехе.

<?php foreach ( $messages as $message ) : ?>
<div class="woocommerce-message"><?php echo wp_kses_post( $message ); ?></div>
<?php endforeach; ?>

wp_kses_post () Функция дезинфицирует выход $ сообщение Переменная путем проверки допустимых тегов и атрибутов.

Вот ваше решение:

Добавьте этот фрагмент в ваши functions.php

function my_filter_allowed_html($allowed, $context){
if (is_array($context)) {
return $allowed;
}

if ($context === 'post') {
$allowed['a']['data-cart'] = true;
}

return $allowed;
}
add_filter('wp_kses_allowed_html', 'my_filter_allowed_html', 10, 2);

Вам нужно подключиться к wp_kses_allowed_html отфильтруйте и добавьте свой атрибут данных, чтобы wp_kses_post () функция не фильтрует это.

1

Другие решения

Других решений пока нет …