Intereting Posts
Невозможно выбрать signup_meta при активации нескольких пользователей Изменение языка одной страницы Является ли список имен пользователей или идентификаторов в поле настраиваемого профиля лучшим способом создания списка подписчиков? Автор Никнейм URL Friendly Показать URL-адрес с несколькими URL-адресами одного показанного изображения / миниатюры? Меню верхнего уровня администратора, указывающее на внешний URL-адрес Миниатюра не отображается на новом посту в категориях Клонированный веб-сайт и woocommerce остановились Список индексов пункта меню WordPress? сохранение / чтение значения настраиваемого поля не работает – значение не получает POSTED Исключая миниатюру сообщения из файла attachment.php при использовании галереи wordpress Как изменить аудио-плейлист, чтобы получить описание Многоуровневая установка в WordPress | Безопасность и будущие миграции Эффективность детской темы Слишком много виджетов

Как переопределить скрипт плагинов

Я использую простые аукционы для плагинов woocommerce, и чтобы они соответствовали моим потребностям, я сделал некоторые настройки для файла внутри плагина. Мне нужно как-то переопределить исходную функцию или ее части с помощью моей собственной модификации. Как мне это сделать?

Оригинальная функция выглядит так:

public function __construct(){ $this->plugin_prefix = 'wc_simple_auctions'; $this->plugin_basefile = plugin_basename(__FILE__); $this->plugin_url = plugin_dir_url($this->plugin_basefile); $this->plugin_path = trailingslashit(dirname(__FILE__)); $this->auction_types = array('normal' => __('Normal', 'wc_simple_auctions'), 'reverse' => __('Reverse', 'wc_simple_auctions')); $this->auction_item_condition = array('new' => __('New', 'wc_simple_auctions'), 'used' => __('Used', 'wc_simple_auctions')); add_action('woocommerce_init', array(&$this, 'init')); //require_once( ABSPATH .'wp-includes/pluggable.php'); } 

Мне нужно, чтобы это было переоценено этим изменением:

  public function __construct(){ $this->plugin_prefix = 'wc_simple_auctions'; $this->plugin_basefile = plugin_basename(__FILE__); $this->plugin_url = plugin_dir_url($this->plugin_basefile); $this->plugin_path = trailingslashit(dirname(__FILE__)); $this->auction_types = array('normal' => __('Normal', 'wc_simple_auctions'), 'reverse' => __('Reverse', 'wc_simple_auctions')); $this->auction_item_condition = array('new' => __('Brand New', 'wc_simple_auctions'), 'used' => __('1/10', 'wc_simple_auctions'), '2/10'=> __('2/10', 'wc_simple_auctions'), '3/10'=> __('3/10', 'wc_simple_auctions'), '4/10'=> __('4/10', 'wc_simple_auctions'), '5/10'=> __('2/10', 'wc_simple_auctions'), '6/10'=> __('6/10', 'wc_simple_auctions'), '7/10'=> __('7/10', 'wc_simple_auctions'), '8/10'=> __('8/10', 'wc_simple_auctions'), '9/10'=> __('9/10', 'wc_simple_auctions'), '10/10'=> __('10/10', 'wc_simple_auctions')); add_action('woocommerce_init', array(&$this, 'init')); //require_once( ABSPATH .'wp-includes/pluggable.php'); } 

Как мне это сделать?

Добавлен фрагмент, в котором вызывается вышеупомянутое:

  public function product_write_panel(){ global $post; $product = get_product( $post->ID ); // Pull the video tab data out of the database $tab_data = maybe_unserialize(get_post_meta($post->ID, 'woo_auction_tab', true)); if(empty($tab_data)){ $tab_data[] = array(); } echo '<div id="auction_tab" class="panel woocommerce_options_panel">'; woocommerce_wp_select( array( 'id' => '_auction_item_condition', 'label' => __( 'Item condition', 'wc_simple_auctions' ), 'options' => apply_filters( 'simple_auction_item_condition',$this->auction_item_condition) ) ); 

}

В принципе, если в плагин не включены документированные API-интерфейсы и / или фильтры, вы не должны делать ничего, кроме использования ключевых крючков, если хотите обновить его в будущем.

Если нет подходящей вещи, вы должны связаться с автором и попросить об этом, или решить, что вы берете на себя полную ответственность и просто раскошеливаете его.

В вашем конкретном случае вы можете изменить атрибут после инициализации объекта, но в следующей версии этого атрибута может быть не больше.

Изменить: поскольку есть фильтр, вам просто нужно использовать его как

 function wpse_242093_auctions($auctions) { return array('new' => __('Brand New', 'wc_simple_auctions'), 'used' => __('1/10', 'wc_simple_auctions'), '2/10'=> __('2/10', 'wc_simple_auctions'), '3/10'=> __('3/10', 'wc_simple_auctions'), '4/10'=> __('4/10', 'wc_simple_auctions'), '5/10'=> __('2/10', 'wc_simple_auctions'), '6/10'=> __('6/10', 'wc_simple_auctions'), '7/10'=> __('7/10', 'wc_simple_auctions'), '8/10'=> __('8/10', 'wc_simple_auctions'), '9/10'=> __('9/10', 'wc_simple_auctions'), '10/10'=> __('10/10', 'wc_simple_auctions')); } add_filter('simple_auction_item_condition','wpse_242093_auctions');