从 Woocommerce 第 3 方插件更改文本

Changing a text from a Woocommerce 3rd party plugin

我正在使用 WooCommerce Wishlist 并想将 添加的产品 更改为其他内容。 这是片段:

public static function add_to_wishlist_button( $url, $product_type, $exists ) {
    _deprecated_function( 'add_to_wishlist_button', '2.0.0', 'add-to-wishlist-button.php template' );
    global $yith_wcwl, $product;
    $product_id = yit_get_product_id( $product );
    $label_option = get_option( 'yith_wcwl_add_to_wishlist_text' );
    $localize_label = function_exists( 'icl_translate' ) ? icl_translate( 'Plugins', 'plugin_yit_wishlist_button', $label_option ) : $label_option;
    $label = apply_filters( 'yith_wcwl_button_label', $localize_label );
    $icon = get_option( 'yith_wcwl_add_to_wishlist_icon' ) != 'none' ? '<i class="fa ' . get_option( 'yith_wcwl_add_to_wishlist_icon' ) . '"></i>' : '';
    $classes = get_option( 'yith_wcwl_use_button' ) == 'yes' ? 'class="add_to_wishlist single_add_to_wishlist button alt"' : 'class="add_to_wishlist"';
    $html  = '<div class="yith-wcwl-add-to-wishlist">';
    $html .= '<div class="yith-wcwl-add-button';  // the class attribute is closed in the next row
    $html .= $exists ? ' hide" style="display:none;"' : ' show"';
    $html .= '><a href="' . esc_url( add_query_arg( 'add_to_wishlist', $product_id ) ) . '" data-product-id="' . $product_id . '" data-product-type="' . $product_type . '" ' . $classes . ' >' . $icon . $label . '</a>';
    $html .= '<img src="' . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . '" class="ajax-loading" alt="loading" width="16" height="16" style="visibility:hidden" />';
    $html .= '</div>';
    $html .= '<div class="yith-wcwl-wishlistaddedbrowse hide" style="display:none;"><span class="feedback">' . __( 'Product added!','yith-woocommerce-wishlist' ) . '</span> <a href="' . esc_url( $url ) . '">' . apply_filters( 'yith-wcwl-browse-wishlist-label', __( 'Browse Wishlist', 'yith-woocommerce-wishlist' ) ) . '</a></div>';
    $html .= '<div class="yith-wcwl-wishlistexistsbrowse ' . ( $exists ? 'show' : 'hide' ) . '" style="display:' . ( $exists ? 'block' : 'none' ) . '"><span class="feedback">' . __( 'The product is already in the wishlist!', 'yith-woocommerce-wishlist' ) . '</span> <a href="' . esc_url( $url ) . '">' . apply_filters( 'yith-wcwl-browse-wishlist-label', __( 'Browse Wishlist', 'yith-woocommerce-wishlist' ) ) . '</a></div>';
    $html .= '<div style="clear:both"></div><div class="yith-wcwl-wishlistaddresponse"></div>';
    $html .= '</div>';
    $html .= '<div class="clear"></div>';
    return $html;
}

从 function.php

更改该文本的最佳做法是什么

由于字符串已经包装到函数 __($string, $domain) 中,您无需使用任何代码或编辑 functions.php 即可轻松翻译它。 你只需要一个翻译插件(我建议使用 Loco Translate)。

  • 安装插件
  • 安装后转到 "Loco Translate" > "Plugins" 使用 WP 仪表板上的左栏菜单
  • 您将看到您网站上当前安装的插件列表,select 您用来管理 WooCommerce Whislists 的插件
  • 然后 select 列表中的语言,如果没有您的语言,请单击 "New language"(如果要创建新语言,请插入语言设置)
  • Select你要翻译的字符串,把译文放在底部文本区
  • 保存

我看到你已经接受了一个答案,但你问过要将它放入一个函数中,下面是方法。过滤器 gettext 接受 3 个参数 gettext Hook

// Change text strings and make sure you're only on the specic text domain
function dd_change_text_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
        case 'Product added!' :
            // Make sure you're only using the phrase in the specific text domain you want.
            if ($domain == 'yith-woocommerce-wishlist'){
                $translated_text = __( 'Something Else','your_text_domain');
            } else {
                // otherwise use the default text, in case Product addded! is used somewhere else in another text domain 
                // This is optional
                $translated_text = __( 'Product added!', $domain);
            }
            break;
    }
    return $translated_text;
}
add_filter( 'gettext', 'dd_change_text_strings', 20, 3 );

我个人...我宁愿添加几行代码也不愿使用整个插件(这可能会向我的网站添加脚本和 css 开销)来完成这个小片段的功能。