@mUchenik

Как правильно внести изменения в плагин?

Всем привет!
Как правильно внести изменения в плагин?
Создал тему temes_child, пытаюсь внести изменения в плагин.
Вот что я делал:
В корневой папке с дочерней темой создавал папку с именем плагина, туда копировал файл плагина, который редактировал - не сработало.
В корневой папке с дочерней темой создавал папку plugins, туда помещал папку с файлом который редактировал - тоже не сработало...
Подробнее:
Пытаюсь отредактировать плагин woocommerce-custom-product-tabs-lite, что бы при обновлении очередность вкладок не менялась, для этого в файле woocommerce-custom-product-tabs-lite.php нужно изменить значение с 'priority' => 25, на 'priority' => 140, в этом участке кода:
/**
	 * Add the custom product tab
	 *
	 * $tabs structure:
	 * Array(
	 *   id => Array(
	 *     'title'    => (string) Tab title,
	 *     'priority' => (string) Tab priority,
	 *     'callback' => (mixed) callback function,
	 *   )
	 * )
	 *
	 * @since 1.2.0
	 * @param array $tabs array representing the product tabs
	 * @return array representing the product tabs
	 */
	public function add_custom_product_tabs( $tabs ) {
		global $product;

		if ( ! $product instanceof WC_Product ) {
			return $tabs;
		}

		if ( $this->product_has_custom_tabs( $product ) ) {

			foreach ( $this->tab_data as $tab ) {
				$tab_title = __( $tab['title'], 'woocommerce-custom-product-tabs-lite' );
				$tabs[ $tab['id'] ] = array(
					'title'    => apply_filters( 'woocommerce_custom_product_tabs_lite_title', $tab_title, $product, $this ),
					'priority' => 25,
					'callback' => array( $this, 'custom_product_tabs_panel_content' ),
					'content'  => $tab['content'],  // custom field
				);
			}
		}

		return $tabs;
	}

Скажите, как правильно сделать, что что бы срабатывали изменения сделаные мной?
Спасибо.
  • Вопрос задан
  • 1272 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Данный плагин, скорее всего, хукается в WooCommerce, фильтр woocommerce_product_tabs. Поэтому посмотрите где эта функция add_custom_product_tabs вызывается в add_filter. В этом вызове вы увидите приоритет и правильное обращение к самой функции (судя по коду, плагин ООП, поэтому там будет не обычная строка с именем функции). Далее с помощью remove_filter() вы его отключаете, а потом подключаете повторно, но уже с нужным вам приоритетом, примерно так:
// примерно так это может выглядеть у них в плагине:
add_filter( 'woocommerce_product_tabs', array( 'Plugin_Class', 'add_custom_product_tabs' ), 25 );

// отключаем и подключаем повторно:
remove_filter( 'woocommerce_product_tabs', array( 'Plugin_Class', 'add_custom_product_tabs' ) );
add_filter( 'woocommerce_product_tabs', array( 'Plugin_Class', 'add_custom_product_tabs' ), 140 );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно создавать дочернею тему и вносить туда изменения. Создавать дочерний плагин нельзя. Выход только один - внести изменения и запретить обновлять этот плагин.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы