WooCommerce 更改加载微调器图标

Posted

技术标签:

【中文标题】WooCommerce 更改加载微调器图标【英文标题】:WooCommerce change loading spinner icon 【发布时间】:2019-04-24 11:32:26 【问题描述】:

IM 试图更改 WooCommerce 加载微调器图标。它在 woocommerce.css 中定义:

.woocommerce .blockUI.blockOverlay::before 
    height: 1em;
    width: 1em;
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-left: -.5em;
    margin-top: -.5em;
    content: '';
    -webkit-animation: spin 1s ease-in-out infinite;
    animation: spin 1s ease-in-out infinite;
    background: url(../images/icons/loader.svg) center center;
    background-size: cover;
    line-height: 1;
    text-align: center;
    font-size: 2em;
    color: rgba(0,0,0,.75);

我尝试使用自定义 css 更改 loader.svg:

.woocommerce .blockUI.blockOverlay::before 
     background: url(http://www.localhost.de/wp-content/uploads/custom-loader.svg) center center !important;

但图标不会改变。所以我用谷歌搜索了一下,在这里找到了这个:

add_filter( 'woocommerce_ajax_loader_url', 'custom_loader_icon', 10, 1 );
function custom_loader_icon() 
    return __( get_home_path() . 'wp-content/uploads/custom-loader.svg', 'woocommerce' );

但加载微调器图标仍然相同。我能做些什么来改变它?我不知道我现在应该尝试什么...

【问题讨论】:

【参考方案1】:

以下代码 css 规则适用于 Woocommerce 最新版本。我已将它们嵌入到 wp_head 挂钩中,因为它易于测试:

您将使用this icon 进行测试,将您的活动子主题放在“img”目录下,重命名文件my_spinner.gif

如果您使用主题而不是子主题,您将在代码中使用get_template_directory_uri() 函数而不是get_stylesheet_directory_uri()

代码:

add_action('wp_head', 'custom_ajax_spinner', 1000 );
function custom_ajax_spinner() 
    ?>
    <style>
    .woocommerce .blockUI.blockOverlay:before,
    .woocommerce .loader:before 
        height: 3em;
        width: 3em;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -.5em;
        margin-top: -.5em;
        display: block;
        content: "";
        -webkit-animation: none;
        -moz-animation: none;
        animation: none;
        background-image:url('<?php echo get_stylesheet_directory_uri() . "/img/my_spinner.gif"; ?>') !important;
        background-position: center center;
        background-size: cover;
        line-height: 1;
        text-align: center;
        font-size: 2em;
    
    </style>
    <?php

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

像魅力一样工作,给别人一个小费。一些结帐表格可能有点长,您不会看到微调器。将位置更新为“固定”,使其始终可见。 它运行良好。从我这边投票。【参考方案2】:

我认为只有 CSS 就足够了

.woocommerce .blockUI.blockOverlay:before,
.woocommerce .loader:before 
  background-image:url('path/to/your/image.gif');

它会正常工作

【讨论】:

【参考方案3】:

试试下面的代码。假设您的 custom-loader.svg 位于“上传”目录的根目录。

add_filter( 'woocommerce_ajax_loader_url', 'custom_loader_icon', 10, 1 );
function custom_loader_icon($str_replace) 
    $upload_dir = wp_upload_dir();
    $str_replace = $upload_dir['baseurl'].'/wp-content/uploads/custom-loader.svg'
    return $str_replace;

希望这行得通。

【讨论】:

不工作对不起。就像我做的一样,但我只是直接返回了 URL

以上是关于WooCommerce 更改加载微调器图标的主要内容,如果未能解决你的问题,请参考以下文章

css CSS3加载图标/微调器

处于加载状态时如何向按钮添加微调器图标?

在 Woocommerce 中启动和停止 Ajax Overlay 微调器

如何更改微调器文本大小和文本颜色?

Bootstrap 3:在等待模式内容加载时显示微调器+淡入淡出背景

Android微调器下拉图标不显示