0

嗨 WooCommerce 忍者!

我正在开发 WooCommerce 插件,每次我在顶部提交表单(保存更改按钮)时都会显示“您的设置已保存。”的更新通知。如何隐藏或更改此通知,我正在使用woocommerce_show_admin_notice过滤器,但在我的插件类中不起作用。以下是我插件的部分代码。钩子的任何想法谁会有用?

太谢谢了!

<?php 
class name_of_plugin extends WC_Payment_Gateway {
   public $error = '';

   // Setup our Gateway's id, description and other values
   function __construct() {
    $this->id = "name_of_plugin";
    $this->method_title = __( "Name", 'domain' );
    $this->method_description = __( "Gateway Plug-in for WooCommerce", 'domain' );
    $this->title = __( "TFS VPOS", 'domain' );
    $this->icon = null;
    $this->has_fields = false;
    $this->init_settings();
    $this->init_form_fields();
    $this->title = $this->get_option( 'title' );


    $this->testurl = 'https://example.com/payment/api';
    $this->liveurl = 'https://example.com/payment/api';


    // Save settings
    if ( is_admin()) {
        add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
    }

    // Disable Admin Notice
    add_filter( 'woocommerce_show_admin_notice', array( $this, 'shapeSpace_custom_admin_notice' ), 10, 2 );
    // add the filter 
    add_filter( 'woocommerce_add_error', array( $this, 'filter_woocommerce_add_notice_type' ), 10, 1 ); 

   } // End __construct()

  // display custom admin notice
  public function filter_woocommerce_add_notice_type($true, $notice ) {
    // magic happen here...
    return $true;
  }
4

1 回答 1

1

我看不到任何可以用来移除它的合适的钩子。

但是这两个似乎有效。

我的第一个想法是重新加载页面,以便当时设置文本消失。像这样的东西。

add_action( 'woocommerce_sections_checkout', 'woocommerce_sections_checkout' );
function woocommerce_sections_checkout() {

    if ( isset( $_GET['section'] ) && isset( $_REQUEST['_wpnonce'] ) && ( $_GET['section'] === 'paypal' ) 
        && wp_verify_nonce( $_REQUEST['_wpnonce'], 'woocommerce-settings' ) ) {

        WC_Admin_Settings::add_message( __( 'Your settings have been saved!', 'woocommerce' ) );
        wp_safe_redirect( wp_get_raw_referer() );
        exit();
    }
}

那么我的第二个选择是如果你想改变文本,我们可以使用过滤器gettext。

add_filter( 'gettext', 'woocommerce_save_settings_text', 20, 3 );
function woocommerce_save_settings_text( $translated_text, $text, $domain ) {

    if ( ( $domain == 'woocommerce' ) && isset( $_GET['section'] ) && ( $_GET['section'] === 'paypal' ) ) {
        switch ( $translated_text ) {
            case 'Your settings have been saved.' :
                $translated_text = __( 'Your awesome settings have been saved.', 'woocommerce' );
                break;
        }
    }
    return $translated_text;
}

请注意,此代码只是一个示例,适用于贝宝设置。改变需要的一切。

于 2017-05-25T09:50:48.830 回答