Плагин добавляет виджеты в Elementor, настройки для продуктов в WooCommerce, использует разные хуки WooCommerce и других плагинов. Сейчас я просто создал общий класс и в этом классе подключаю файлы. Например для изменений в полях на странице оплаты я создал файл в плагине с названием Checkout.php и создал класс. То есть это вообще не OOP, а обычный функциональный код, просто в классе. Также плагин должен соединятся с другим сервером через API. Как это всё правильно организовать? Я читал про MVC. Это подходит здесь? Что будет моделью, просмотром, контроллером? Я понял что просмотр это файлы шаблоны с HTML разметкой, можно ли подключить файл или это должен быть метод в котором подключается файл, который надо вызывать в другом классе?
class Checkout {
public function __construct() {
add_filter( 'woocommerce_checkout_fields', array( $this, 'checkout_fields' ), 10, 1 );
add_filter( 'woocommerce_checkout_fields', array( $this, 'checkout_remove_fields' ), 10, 1 );
}
public function checkout_fields( $fields ) {
$fields['billing']['billing_first_name']['placeholder'] = esc_html__( 'First Name*', 'textdomain' );
$fields['billing']['billing_first_name']['label'] = esc_html__( 'First Name', 'textdomain' );
$fields['billing']['billing_first_name']['priority'] = 5;
$fields['billing']['billing_last_name']['placeholder'] = esc_html__( 'Last Name*', 'textdomain' );
$fields['billing']['billing_last_name']['label'] = esc_html__( 'Last Name', 'textdomain' );
$fields['billing']['billing_last_name']['priority'] = 10;
$fields['billing']['billing_address_1']['placeholder'] = esc_html__( 'Address (optional)', 'textdomain' );
$fields['billing']['billing_address_1']['label'] = esc_html__( 'Address', 'textdomain' );
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_1']['priority'] = 15;
$fields['billing']['billing_email']['placeholder'] = esc_html__( 'Email Address*', 'textdomain' );
$fields['billing']['billing_email']['label'] = esc_html__( 'Email Address', 'textdomain' );
$fields['billing']['billing_email']['priority'] = 20;
$fields['account']['account_password']['label'] = esc_html__( 'Password', 'textdomain' );
$fields['account']['account_password']['placeholder'] = esc_html__( 'Password*', 'textdomain' );
return $fields;
}
public function checkout_remove_fields( $fields ) {
unset(
$fields['billing']['billing_address_2'],
$fields['billing']['billing_phone'],
$fields['billing']['billing_company'],
$fields['billing']['billing_city'],
$fields['billing']['billing_postcode'],
$fields['billing']['billing_state'],
$fields['billing']['billing_country']
);
return $fields;
}
}