【问题标题】:Remove "Choose an option" from variable product dropdowns in Woocommerce 3从 Woocommerce 3 的可变产品下拉列表中删除“选择一个选项”
【发布时间】:2018-07-04 22:41:36
【问题描述】:

我想从 WooCommerce 产品页面的“选项”后面的变体下拉列表中删除:

我发现了很多显然不能正常工作的代码,它们应该可以完成这项工作。可能已经过时到最新的 WooCommerce 版本。

我尝试过并且部分有效:

add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'my_wc_filter_dropdown_args', 10 );
function my_wc_filter_dropdown_args( $args ) {
    $args['show_option_none'] = '';
    return $args;
}

这仅在我在 '' 之间设置一些文本时才有效,而不是空的。当它像上面一样添加到functions.php中时,它没有改变并设置为默认文本 - “选择一个选项”,如图所示。我不确定这里有什么问题。我也尝试了“false”或“none”,但没有使用任何一个选项。

如果有人可以帮助我,我将不胜感激。

我正在使用最新的 WP 4.9.6 和最新的 WooCommerce(无论是什么版本)。一切都更新到最新版本,甚至 PHP (7.2)。

【问题讨论】:

    标签: php wordpress woocommerce html-select product


    【解决方案1】:

    正确的做法是改用woocommerce_dropdown_variation_attribute_options_html过滤钩子。在具有默认属性下拉列表的普通变量产品的屏幕截图下方:

    所以有两种不同的情况:

    1) 完全删除这个 html option**:

    add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
    function filter_dropdown_option_html( $html, $args ) {
        $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
        $show_option_none_html = '<option value="">' . esc_html( $show_option_none_text ) . '</option>';
    
        $html = str_replace($show_option_none_html, '', $html);
    
        return $html;
    }
    

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

    html 选项被完全移除,只保留带有产品属性值的选项:


    2) 仅删除文本“选择一个选项”(您将有一个没有标签名称的选项):

    add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
    function filter_dropdown_option_html( $html, $args ) {
        $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
        $show_option_none_text = esc_html( $show_option_none_text );
    
        $html = str_replace($show_option_none_text, '', $html);
    
        return $html;
    }
    

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

    所有代码都在最新的 Woocommerce 版本 3.4.x 上测试

    【讨论】:

    • 谢谢,这确实是在删除文本“选择一个选项”。但它看起来和工作得更好的方式是完全删除这条线。现在看起来像这样:i.imgur.com/qjf6SJF.png 可以这样删除吗?提前致谢。
    • @RomanBartík 有 2 个代码 sn-ps:第一个 完全删除 html 选项行,就像你问的那样……第二个只删除文本。试试第一个,你会发现它可以在 Woocommerce 最新版本上运行。
    • 抱歉,我没有注意到您的屏幕截图是在没有它们的情况下加载的页面,所以有点混乱。一切都如你所说。我需要你发布的第一个版本,所以我使用了它,但两者都如你所说。再次感谢您的误解。
    • @LoicTheAztec 我在尝试使案例 1 工作时遇到问题,它只能部分工作,选择一个选项文本被删除并且第一个实际选项被正确选择,但问题是文本是也从此选项中删除。使用最新的 woocomerce 版本
    • @RichardMišenčík 我已经在 WC 上一个版本上测试了代码,它仍然是完美的。我想这可能与您的语言有关……
    【解决方案2】:

    只需放入函数文件

    add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'wc_remove_options_text');
    function wc_remove_options_text( $args ){
        $args['show_option_none'] = '';
        return $args;
    }
    

    【讨论】:

      【解决方案3】:

      将此代码添加到您当前主题的 function.php 文件中。

      add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
      function filter_dropdown_option_html( $html, $args ) {
          $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
          $show_option_none_html = '<option value="">'.esc_html( $show_option_none_text ).'</option>';
          $html = str_replace($show_option_none_html, '', $html);
          return $html;
      }
      

      【讨论】:

        【解决方案4】:

        用 CSS 来做这个怎么样?

        .select2-results__options li:first-child {
           display: none;
        }
        

        【讨论】:

        • 如果选择了默认变体,这将隐藏默认值。
        猜你喜欢
        • 1970-01-01
        • 2020-11-07
        • 2017-01-11
        • 1970-01-01
        • 2019-03-05
        • 2020-01-10
        • 2022-06-14
        • 1970-01-01
        • 2018-07-07
        相关资源
        最近更新 更多