Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как размножить плагин?
kermina12  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 41157
На форуме: 1 год, 8 месяцев
Карма:




Добрый день.

Есть плагин оплаты для woocommerce, подскажите, пожалуйста, как его размножить так, чтобы выводить несколько способов оплаты по одному и тому же принципу? Плагин даёт возможность вывести только один способ, а нужно несколько сделать.



В плагине всего один php файл, картинка и ридми. Ниже содержание php файла:
<?php

/*

Plugin Name: Without payment woocommerce

Plugin URI:
http://www.zixn.ru/plagin-payment-woocommerce.html

Description: Платёжный шлюз woocommeerce, без оплаты и обязательств. Оплата товара только после звонка менеджера магазина.

Version: 1.2.2

Author: Djo

Author URI:
http://zixn.ru

*/



/* Copyright 2016 Djo (email:
izm@zixn.ru)



This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.



This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.



You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

*

*/






if (!class_exists('WC_Payment_Gateway')) {

add_action('plugins_loaded', 'init_without_shluz'); //Подключаем класс с шлюзом



/**

* Подключиение класса с платёжной системой

*/


function init_without_shluz() {





class WC_WITHOUTGATEWAY extends WC_Payment_Gateway {



public function __construct() {



$plugin_dir = plugin_dir_url(__FILE__);



global $woocommerce;



$this->id = 'without';

$this->icon = apply_filters('woocommerce_without_icon', '' . $plugin_dir . 'without.png');

$this->has_fields = false;

// Загрузка настроек

$this->init_form_fields();

$this->init_settings(); //Получение настроек из woocommerce

// Define user set variables


$this->title = $this->settings['title'];

$this->description = $this->settings['description'];

$this->instructions = $this->settings['instructions'];

//$this->redirect_page_id = $this->settings['redirect_page_id'];

// Logs


if ($this->debug == 'yes') {

$this->log = $woocommerce->logger();

}



// Actions

//// Payment listener/API hook

// add_action('woocommerce_api_wc_' . $this->id, array($this, 'check_ipn_response'));

//

//Подтверждалка заказа


add_action('woocommerce_receipt_' . $this->id, array($this, 'receipt_page')); // Подтверждение заказа

// Сохранение настроек


add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));

}



/**

* Внешний вид страницы Платёжного шлюза

* */


public function admin_options() {

?>

<h3><?php _e('WithOut', 'woocommerce'); ?></h3>

<
p><?php _e('Настройка приема электронных платежей через "Без оплаты".', 'woocommerce'); ?></p>

<
table class="form-table">



<?php

// Генерация HTML настроек на основе заданных параметров

$this->generate_settings_html();

?>

</table><!--/.form-table-->



<?php

}



// End admin_options()



/**

* Поля для HTML опций шлюза

*/


function init_form_fields() {

$this->form_fields = array(

'enabled' => array(

'title' => __('Включить/Выключить', 'woocommerce'),

'type' => 'checkbox',

'label' => __('Включен', 'woocommerce'),

'default' => 'yes'

),

'title' => array(

'title' => __('Название', 'woocommerce'),

'type' => 'text',

'description' => __('Это название, которое пользователь видит во время проверки.', 'woocommerce'),

'default' => __('Without', 'woocommerce')

),


'without_succes' => array(

'title' => __('Страница перенаправления', 'woocommerce'),

'type' => 'select',

'options' => $this->get_pages('Выберите страницу...'),

'description' => "На эту страницу покупатель попадёт после подтверждения заказа, вашу страницу можно оформить по вашему вкусу"

),

'without_сonfirm' => array(

'title' => __('Отключить подтверждение', 'woocommerce'),

'type' => 'checkbox',

'label' => __('Отключить страницу подтверждения заказа. В случае если галка установлена - после выбора оплаты по данному способу, покупатель сразу будет попадать на страницу выбранную вами в опции "Страница перенаправления"', 'woocommerce'),

'default' => 'no'

),

'debug' => array(

'title' => __('Режим логирования', 'woocommerce'),

'type' => 'checkbox',

'label' => __('Включить логирование (<code>woocommerce/logs/without.txt</code>)', 'woocommerce'),

'default' => 'no'

),

'description' => array(

'title' => __('Description', 'woocommerce'),

'type' => 'textarea',

'description' => __('Описанием метода оплаты которое клиент будет видеть на вашем сайте.', 'woocommerce'),

'default' => 'Без оплаты.'

)

);


}



/**

* There are no payment fields for sprypay, but we want to show the description if set.

* */


// function payment_fields() {

// if ($this->description) {

// echo wpautop(wptexturize($this->description));

// }

// }




/**

* Генерация кнопок на странице подтверждения заказа

* */


public function generate_form($order_id) {

global $woocommerce;



$order = new WC_Order($order_id);



if ($this->testmode == 'yes') {

$action_adr = $this->testurl;

} else {

// $action_adr = get_permalink($this->settings['without_succes']); //Получаем опцию из базы woo

$action_adr = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

}

$payu_args = array(

'amount' => $order->order_total,

'productinfo' => $productinfo,

'firstname' => $order->billing_first_name,

'lastname' => $order->billing_last_name,

'address1' => $order->billing_address_1,

'address2' => $order->billing_address_2,

'city' => $order->billing_city,

'state' => $order->billing_state,

'country' => $order->billing_country,

'zipcode' => $order->billing_zip,

'email' => $order->billing_email,

'phone' => $order->billing_phone,

'surl' => $action_adr,

'furl' => $action_adr,

'curl' => $action_adr,

'InvId' => $order_id, //ID заказа

);

$payu_args_array = array();

foreach ($payu_args as $key => $value) {

$payu_args_array[] = '<input type="hidden" name="' . esc_attr($key) . '" value="' . esc_attr($value) . '" />';

}



return

'<form action="' . esc_url($action_adr) . '" method="POST">' . "\n" .

implode("\n", $payu_args_array) .

'<input type="submit" class="button alt" name="without_pay" value="' . __('Подтвердить', 'woocommerce') . '" /> <a class="button cancel" href="' . $order->get_cancel_order_url() . '">' . __('Отказаться & вернуться в корзину', 'woocommerce') . '</a>' . "\n" .

'</form>';

}



/**

* Запускает механизм после выбора оплаты на странице ввода данных о клиенте

* */


function process_payment($order_id) {

$order = new WC_Order($order_id);



return array(

'result' => 'success',

'redirect' => add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(woocommerce_get_page_id('pay'))))

);


}



/**

* Страница подтверждения заказ

* */


function receipt_page($order_id) {

$order = new WC_Order($order_id);

global $woocommerce;





if ($this->settings['without_сonfirm'] == 'yes') { //Если галка установлена, пропускаем страницу подтверждения заказа

$woocommerce->cart->empty_cart();

$action_adr = get_permalink($this->settings['without_succes']);

$this->updateStatus($order_id);

wp_redirect($action_adr);

} else {

echo '<p>' . __('Спасибо за заказ, для подтверждения заказа - нажмите на кнопку ниже!', 'woocommerce') . '</p>';

echo $this->generate_form($order_id); //Кнопки и прочее

if (isset($_POST['without_pay'])) {

$woocommerce->cart->empty_cart();

$action_adr = get_permalink($this->settings['without_succes']);

$this->updateStatus();

wp_redirect($action_adr);

}

}

}




/**

* Изменение статуса заказа

* */


function updateStatus($order_id = null) {

global $woocommerce;

if (!empty($_POST['InvId'])) {

$inv_id = $_POST['InvId'];

} else {



$inv_id = $order_id;

}

$order = new WC_Order($inv_id);

$order->update_status('processing', __('Платеж успешно оплачен', 'woocommerce'));

}



// Получает страницы сайта

function get_pages($title = false, $indent = true) {

$wp_pages = get_pages('sort_column=menu_order');

$page_list = array();

if ($title)

$page_list[] = $title;

foreach ($wp_pages as $page) {

$prefix = '';

// show indented child pages?

if ($indent) {

$has_parent = $page->post_parent;

while ($has_parent) {

$prefix .= ' - ';

$next_page = get_page($has_parent);

$has_parent = $next_page->post_parent;

}

}


// add to page list array array

$page_list[$page->ID] = $prefix . $page->post_title;

}

return $page_list;

}



}




/**

* Функция подключения класса с платёжным шлюзом

* */


function add_without_gateway($methods) {

$methods[] = 'WC_WITHOUTGATEWAY';

return $methods;

}



add_filter('woocommerce_payment_gateways', 'add_without_gateway');

}



// -- конец Подключиение класса с платёжной системой

}

?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 19 дней
Карма: 725

Не курю:
1 год, 2 месяца, 5 дней


зачем каша? 1 плагин = 1 способ оплаты.
хочется несколько способов - пишите новые плагины.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kermina12  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 41157
На форуме: 1 год, 8 месяцев
Карма:




Цитата (Игорь_Vasinsky @ 23.11.2016 - 06:24)
зачем каша? 1 плагин = 1 способ оплаты.
хочется несколько способов - пишите новые плагины.

В том то и дело, что нужно несколько способов разных указать. Плагин есть, нужно как-то сделать его копию так, чтобы указать второй способ оплаты. Потом ещё копию и на её основе сделать третий способ.
Я новичок и написать не смогу, но если подскажете что редактировать в плагине, то попробую осилить.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
walerus  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чтобы все !
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1964
Пользователь №: 26852
На форуме: 5 лет, 8 месяцев, 18 дней
Карма: 111




kermina12
Сформулируйте еще раз свой вопрос, потому как не понятно что Вы хотите...

Данный плагин, а именно "Without payment for WooCommerce", предназначен только для WooCommerce от слова СОВСЕМ и множить его никакого толку не даст.

Скажите конкретно, что куда и как Вы хотите прикрутить.
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25980
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 19 дней
Карма: 725

Не курю:
1 год, 2 месяца, 5 дней


Цитата
Я новичок и написать не смогу, но если подскажете что редактировать в плагине, то попробую осилить.

не, если вы новичёк, то толку нет - что-то говорить. тут писать код надо от нуля и до конца.
или гуглить готовые плагины.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kermina12  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 6
Пользователь №: 41157
На форуме: 1 год, 8 месяцев
Карма:




Цитата (walerus @ 24.11.2016 - 03:26)
kermina12
Сформулируйте еще раз свой вопрос, потому как не понятно что Вы хотите...

Данный плагин, а именно "Without payment for WooCommerce", предназначен только для WooCommerce от слова СОВСЕМ и множить его никакого толку не даст.

Скажите конкретно, что куда и как Вы хотите прикрутить.

Мне и нужно к Вукомерсу прикрутить несколько его копий. Если просто ставлю, то он даёт возможность указать один способ оплаты, к примеру "Оплата курьеру". Всё устраивает.
Но в магазине есть ещё "Оплата наличными в офисе", "Оплата наложенным платежём" и т.п.
Логично его размножить чтобы внести эти способы оплаты, что и хочу сделать...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 264
Пользователь №: 39616
На форуме: 2 года, 6 месяцев, 20 дней
Карма: 31




Замени все вхождения слова "without" на "without1" (без учета регистра).
Теоретически должно получиться. По крайней мере устанавливается:

user posted image


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 21 день
Карма: 7




Короче, копируешь код в новый файл и меняешь Plugin Name: Without payment woocommerce, на свое название, к примеру
Plugin Name: Meeplagin payment woocommerce
Все остальное типа Plugin URI:http://www.zixn.ru/plagin-payment-woocommerce.htmlDescription: Платёжный шлюз woocommeerce, без оплаты и обязательств. Оплата товара только после звонка менеджера магазина.
можешь удалить, ну и папку и файл пхп нужно назвать соответсвенно так же как и новый плагин, и будет у тебя новый плагин, ну а дальше меняй в этом файле че надо, на новый способ оплаты или еще как. А вообще загугли для начала как писать плагины на вордпресс
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса