2017-05-25 128 views
0

Hi WooCommerce ninjas!隱藏/更改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; 
    } 

回答

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; 
} 

請注意,此代碼僅僅是一個示例,並且可用於貝寶設置。改變所需的一切。

+0

感謝您幫助@Reigel,實際上我使用css來隱藏無用部分,然後擴展了'display_notice'方法來繪製錯誤。 – htmlbrewery