Мне удалось изменить 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"
игнорируется Просто раздражает.
Вот краткое объяснение того, почему это происходит.
Взгляните на 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 () функция не фильтрует это.
Других решений пока нет …