PluginProbe
MakeCommerce for WooCommerce / 2.6.2
MakeCommerce for WooCommerce v2.6.2
4.1.0 4.0.8 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.2 All 96 releases
makecommerce / makecommerce.php

makecommerce.php in MakeCommerce for WooCommerce 2.6.2, at makecommerce.php

573 lines 22.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: MakeCommerce for WooCommerce
4 Description: Adds MakeCommerce payment gateway and Itella/Omniva parcel machine shipping methods to Woocommerce checkout
5 Version: 2.6.2
6 Author: Maksekeskus AS
7 Author URI: https://MakeCommerce.net/
8 Text Domain: wc_makecommerce_domain
9 WC requires at least: 3.0
10 WC tested up to: 4.5.1
11 */
12
13 if (!defined('ABSPATH')) {
14 exit; // Exit if accessed directly.
15 }
16
17 include_once(ABSPATH.'wp-admin/includes/plugin.php');
18 if (is_plugin_active('woocommerce/woocommerce.php')) {
19
20 define('WC_MC_VERSION', 2.0);
21
22 $enable_experimental = get_option('mk_checkout_sco', 'no');
23 if ($enable_experimental === 'yes') {
24 require_once(__DIR__.'/makecommerce-simplecheckout.php');
25 }
26 require_once(__DIR__.'/makecommerce-transport.php');
27 require_once(__DIR__.'/makecommerce-payment.php');
28
29 if (is_admin() && !extension_loaded('curl')) {
30 add_action('admin_notices', function(){
31 $class = 'notice notice-error';
32 $message = __( 'You have enabled MakeCommerce module but it seems that you don\'t have CURL enabled. This way MakeCommerce unfortunately does not work!', 'wc_makecommerce_domain');
33 printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
34 });
35 }
36
37
38 global $mkDbTable;
39 $mkDbTable = 'mc_banklinks';
40
41 function mc_install() {
42 global $wpdb;
43 global $mkDbTable;
44
45 $tableName = $wpdb->prefix . $mkDbTable;
46
47 $charset = $wpdb->get_charset_collate();
48
49 $sql = "CREATE TABLE $tableName (
50 id mediumint(9) NOT NULL AUTO_INCREMENT,
51 type varchar(10) NOT NULL,
52 country char(2) NOT NULL,
53 name varchar(25) NOT NULL,
54 url varchar(250) NOT NULL,
55 logo_url varchar(250),
56 min_amount mediumint(9),
57 max_amount mediumint(9),
58 UNIQUE KEY id (id)
59 ) $charset;";
60
61 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
62 dbDelta( $sql );
63 }
64
65 register_activation_hook( __FILE__, 'mc_install' );
66
67 // On uninstall remove scheduled hook
68 function mc_uninstall() {
69 if (wp_next_scheduled ( 'mc_banklinks_update_cron' )) {
70 wp_clear_scheduled_hook('mc_banklinks_update_cron');
71 }
72 }
73
74 register_deactivation_hook(__FILE__, 'mc_uninstall');
75
76 // WP schedule callable action
77 add_action('mc_banklinks_update_cron', 'update_mc_banklinks');
78 // Assign schedule if not set, update compatible no need to reactivate, format('U') php 5.2 compatible
79 // Assigns task at 23.59.59 by local time, task runs if time has passed and somebody navigates the site
80 if (! wp_next_scheduled ( 'mc_banklinks_update_cron' )) {
81 $date = new DateTime();
82 $date->setTime(rand(0,23),rand(0,59),00);
83 $timestamp = intval($date->format('U'));
84 //$local = 3600 * intval(get_option('gmt_offset'));
85 //wp_schedule_event($timestamp - $local, 'twicedaily', 'mc_banklinks_update_cron');
86 wp_schedule_event($timestamp, 'twicedaily', 'mc_banklinks_update_cron');
87 }
88
89 if (!class_exists('wc_makecommerce_domain')) {
90 require_once('includes/vendor/autoload.php');
91 require_once('includes/Maksekeskus.php');
92 }
93
94 function mk_check_payment() {
95
96 global $woocommerce;
97 $api = mk_get_api();
98
99 //set the correct language
100 if (isset($_GET["lang1"])) {
101 //set polylang language
102 if (function_exists('pll_current_language')) {
103 //get the correct locale name from polylang
104 $polylangLangs = pll_the_languages(array('raw' => 1));
105 if (isset($polylangLangs[$_GET["lang1"]])) {
106 $locale = str_replace("-", "_", $polylangLangs[$_GET["lang1"]]["locale"]);
107 }
108
109 //first change WP language, this triggers some polylang hooks
110 switch_to_locale($locale);
111
112 //second, change WPML language?!?! this ensures the correct landingpage (works with polylang)
113 do_action('wpml_switch_language', $_GET["lang1"]);
114 } else {
115 if (function_exists('icl_object_id')) { //weirdly enough icl_object ID exists in this point of the request. It doesn't in other locations...
116 //set wpml language
117 do_action('wpml_switch_language', $_GET["lang1"]);
118 }
119 }
120 }
121
122 $returnUrl = home_url();
123
124 $request = stripslashes_deep($_POST);
125 if ($api->verifyMac($request)) {
126 $data = $api->extractRequestData($request);
127 $reference = false;
128
129 if (!empty($data['error']) ) {
130 wc_add_notice(__('Payment failed', 'wc_makecommerce_domain'), 'error');
131 return $returnUrl;
132 }
133
134 if (!empty($data['message_type']) ) {
135 if ($data['message_type'] == 'payment_return') {
136 $transactionId = $data['transaction'];
137 $reference = $data['reference'];
138 $paymentStatus = $data['status'];
139 }
140 if ($data['message_type'] == 'token_return') {
141 if (!empty($data['transaction']['reference'])) {
142 $reference = $data['transaction']['reference'];
143 }
144 $paymentStatus = $data['transaction']['status'];
145 $transactionId = $data['transaction']['id'];
146
147 // for API backward compatibility - if we didn't find reference in the mesage, or the transaction state vas still PENDING
148 // we'll fetch the transaction data from API, and make a payment request if needed
149 // this all can be removed after 2017-jan
150 if (!$reference or $paymentStatus == 'PENDING') {
151 $transaction = $api->getTransaction($transactionId);
152 if (!empty($transaction->reference)) {
153 $reference = $transaction->reference;
154 }
155
156 $paymentStatus = $transaction->status;
157
158 if ($paymentStatus == 'PENDING') {
159 $paymentRequest = array(
160 'amount' => (string)sprintf("%.2f", $transaction->amount),
161 'currency' => $transaction->currency,
162 'token' => $data['token']['id']
163 );
164 $payment = $api->createPayment($transactionId, $paymentRequest);
165 // TODO: validate
166 $paymentStatus = $payment->transaction->status;
167 }
168
169 }
170
171
172 }
173
174 }
175 }
176
177 // if we didn't find reference to an Order, we send user to shop landing-page. TODO: could be improved
178 if (!$reference) { return $returnUrl; }
179
180 $order = new WC_Order($reference);
181 // if we din't find the Order, we send user to shop landing-page. TODO: could be improved
182 if (!$order->get_id()) { return $returnUrl; }
183
184 $returnUrl = $order->get_checkout_order_received_url();
185
186 if ($paymentStatus == 'CANCELLED' || $paymentStatus == 'COMPLETED') {
187 //get transaction to update the payment method.
188 $transaction = $api->getTransaction($transactionId);
189
190 //make sure the payment method is the same for simplecheckout and normal version.
191 $paymentMethod = "";
192 if (isset($transaction->type) && isset($transaction->method)) {
193 if ($transaction->type == "card") {
194 $paymentMethod = "card_".$transaction->method;
195 } else {
196 if (isset($transaction->country)) {
197 $paymentMethod = $transaction->country."_".$transaction->method;
198 }
199 }
200 }
201
202 //update _makecommerce_preselected_method
203 update_post_meta($order->get_id(), '_makecommerce_preselected_method', $paymentMethod);
204 }
205
206 switch($paymentStatus) {
207
208 case 'CANCELLED':
209 $order->update_status( 'cancelled' );
210 wc_add_notice(__('Payment transaction cancelled', 'wc_makecommerce_domain'), 'error');
211 $returnUrl = wc_get_cart_url();
212 break;
213
214 case 'COMPLETED':
215 $orderNote = array();
216 $orderNote[] = __('Transaction ID', 'wc_makecommerce_domain') . ': <a target=_blank href="'.$api->getEnvUrls()->merchantUrl.'/merchant/shop/deals/detail.html?id='. $transactionId .'">'.$transactionId.'</a>';
217 $orderNote[] = __('Payment option', 'wc_makecommerce_domain') . ': ' . get_post_meta($order->get_id(), '_makecommerce_preselected_method', true);
218 $order->add_order_note(implode("\r\n", $orderNote));
219 if (!empty($data['token']) && !empty($data['token']['multiuse'])) {
220 update_post_meta($order->get_id(), '_makecommerce_payment_token', $data['token']['id']);
221 update_post_meta($order->get_id(), '_makecommerce_payment_token_valid_until', $data['token']['valid_until']);
222 }
223
224 if (isset($_GET['lang1'])) {
225 $order->update_meta_data('wpml_language', $_GET["lang1"]);
226 }
227
228 $order->payment_complete( $transactionId );
229 $woocommerce->cart->empty_cart();
230 break;
231 }
232
233 return $returnUrl;
234 }
235
236
237
238
239 $MKAPI = false;
240 function mk_get_api() {
241 global $MKAPI;
242 if ($MKAPI) {
243 //return $MKAPI;
244 }
245 $mk_api_type = get_option('mk_api_type', false);
246 if (!$mk_api_type) {
247 return false;
248 }
249 if ($mk_api_type !== 'live') {
250 $key_prefix = $mk_api_type.'_';
251 } else {
252 $key_prefix = '';
253 }
254 $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
255 $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
256 $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
257 if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
258 return false;
259 }
260 $MKAPI = new \Maksekeskus\Maksekeskus($mk_shop_id, $mk_public_key, $mk_private_key, $mk_api_type === 'live' ? false : true);
261 return $MKAPI;
262 }
263
264 function mk_is_api_set() {
265 $mk_api_type = get_option('mk_api_type', false);
266 if (!$mk_api_type) {
267 return false;
268 }
269 if ($mk_api_type !== 'live') {
270 $key_prefix = $mk_api_type.'_';
271 } else {
272 $key_prefix = '';
273 }
274 $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
275 $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
276 $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
277 if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
278 return false;
279 }
280 return true;
281 }
282
283
284 function mk_admin_error() {
285 printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', __('Please check that you have configured correctly MakeCommerce API accesses', 'wc_makecommerce_domain'));
286 }
287
288
289
290 add_filter('query_vars', 'mk_cron_query_vars');
291 add_action('parse_request', 'mk_parse_cron_update_vars');
292
293 function mk_cron_query_vars($vars) {
294 $vars[] = 'mk-action';
295 $vars[] = 'mk-shop-id';
296 $vars[] = 'mk-test-shop-id';
297 return $vars;
298 }
299
300 function mk_parse_cron_update_vars($wp) {
301 if (array_key_exists('mk-action', $wp->query_vars) && $wp->query_vars['mk-action'] == 'mk-update'
302 && (array_key_exists('mk-shop-id', $wp->query_vars) || array_key_exists('mk-test-shop-id', $wp->query_vars) ) ) {
303 if( (strlen($wp->query_vars['mk-shop-id']) && $wp->query_vars['mk-shop-id'] == get_option('mk_shop_id', false) )
304 || (strlen($wp->query_vars['mk-test-shop-id']) && $wp->query_vars['mk-test-shop-id'] == get_option('mk_test_shop_id', false) ) ) {
305 update_mc_banklinks();
306 exit();
307 }
308 }
309 }
310
311 function mk_admin_login_update($user_login, $user) {
312 if(user_can( $user, 'administrator' )) {
313 update_mc_banklinks();
314 }
315 }
316 add_action('wp_login', 'mk_admin_login_update', 10, 2);
317
318
319
320 function mk_admin_add_api_settings($sections) {
321 $sections['mk_api'] = __('MakeCommerce API access', 'wc_makecommerce_domain');
322 return $sections;
323 }
324
325 function mk_admin_api_settings($settings) {
326 global $current_section;
327 if ($current_section !== 'mk_api') {
328 return $settings;
329 }
330 return array(
331 array('type' => 'title', 'desc' => __get_logo_html()),
332 array(
333 'type' => 'title',
334 'title' => __('MakeCommerce API access credentials', 'wc_makecommerce_domain'),
335 'desc' => __('To use MakeCommerce/Maksekeskus services you need to enter API credentials below here <br/> <br/>', 'wc_makecommerce_domain').
336 sprintf( __('To further configure the Payment methods please go to <a href=."%s">MakeCommerce Checkout Options</a>, links to settings of our Shipment methods are listed below', 'wc_makecommerce_domain'), 'admin.php?page=wc-settings&tab=checkout&section=makecommerce'),
337 'id' => 'mk_api_settings'
338 ),
339 array(
340 'type' => 'select',
341 'title' => __('Current environment', 'wc_makecommerce_domain'),
342 'desc' => __('See more about <a href="https://maksekeskus.ee/en/for-developers/test-environment/">MakeCommerce Test environment</a>', 'wc_makecommerce_domain'),
343 'default' => 'live',
344 'options' => array(
345 'live' => __('Live', 'wc_makecommerce_domain'),
346 'test' => __('Test', 'wc_makecommerce_domain'),
347 ),
348 'id' => 'mk_api_type'
349 ),
350 array(
351 'id' => 'mk_shop_id',
352 'type' => 'text',
353 'title' => __('Shop ID (live)', 'wc_makecommerce_domain'),
354 'desc' => __('Get it from <a href="https://merchant.maksekeskus.ee/api.html" target="_blank">Merchant Portal</a>','wc_makecommerce_domain'),
355 'class' => 'input-text regular-input',
356 ),
357 array(
358 'id' => 'mk_private_key',
359 'type' => 'text',
360 'title' => __('Secret key (live)', 'wc_makecommerce_domain'),
361 'class' => 'input-text regular-input',
362 ),
363 array(
364 'id' => 'mk_public_key',
365 'type' => 'text',
366 'title' => __('Publishable key (live)', 'wc_makecommerce_domain'),
367 'class' => 'input-text regular-input',
368 ),
369 array(
370 'id' => 'mk_test_shop_id',
371 'type' => 'text',
372 'title' => __('Shop ID (test)', 'wc_makecommerce_domain'),
373 'class' => 'input-text regular-input',
374 'default' => 'f64b4f20-5ef9-4b7b-a6fa-d623d87f0b9c',
375 'desc' => __('Get it from <a href="https://merchant-test.maksekeskus.ee/api.html" target="_blank">Merchant Portal Test</a>','wc_makecommerce_domain'),
376 ),
377 array(
378 'id' => 'mk_test_private_key',
379 'type' => 'text',
380 'title' => __('Secret key (test)', 'wc_makecommerce_domain'),
381 'default' => 'MPjcVMoRZPAucsTuGK5ZukOlV7BlzgSvXOowJUkk9IFSQPVooRwcVOxzz3mhEpgM',
382 'class' => 'input-text regular-input',
383 ),
384 array(
385 'id' => 'mk_test_public_key',
386 'type' => 'text',
387 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
388 'default' => '7Hog41ci2mKkmtviMycWxpNx14pNP70m',
389 'class' => 'input-text regular-input',
390 ),
391 array('type' => 'sectionend', 'id' => 'mk_api_settings'),
392 array(
393 'type' => 'title',
394 'desc' => '<br><hr><br>',
395 ),
396 array(
397 'id' => 'mk_module_title',
398 'type' => 'title',
399 'title' => __('Makecommerce modules', 'wc_makecommerce_domain'),
400 'desc' => __('Our plugin adds several modules to your shop. Here you can switch off modules that are not important for you, they will disappear from Woocommerce settings menus.<br> Each active module have their own settings dialog, where they must also be Enabled before use.', 'wc_makecommerce_domain'),
401 'class' => '',
402 ),
403 array(
404 'id' => 'mk_transport_apt_omniva',
405 'type' => 'checkbox',
406 'default' => 'yes',
407 'title' => __('Omniva Parcel Machine', 'wc_makecommerce_domain'),
408 'desc' => __('enable Omniva parcel machines shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_omniva')).')',
409 'class' => '',
410 ),
411 array(
412 'id' => 'mk_transport_apt_smartpost',
413 'type' => 'checkbox',
414 'default' => 'yes',
415 'title' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain'),
416 'desc' => __('enable SmartPOST parcel machines shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_smartpost')).')',
417 'class' => '',
418 ),
419 array(
420 'id' => 'mk_transport_apt_dpd',
421 'type' => 'checkbox',
422 'default' => 'no',
423 'title' => __('DPD', 'wc_makecommerce_domain') . ' ' . __('parcel machine', 'wc_makecommerce_domain'),
424 'desc' => __('enable DPD parcel machine shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=parcelmachine_dpd')).')',
425 'class' => '',
426 ),
427 array(
428 'id' => 'mk_transport_courier_omniva',
429 'type' => 'checkbox',
430 'default' => 'yes',
431 'title' => __('Omniva Courier', 'wc_makecommerce_domain'),
432 'desc' => __('enable Omniva courier shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=courier_omniva')).')',
433 'class' => '',
434 ),
435 array(
436 'id' => 'mk_transport_courier_smartpost',
437 'type' => 'checkbox',
438 'default' => 'yes',
439 'title' => __('SmartPOST Courier', 'wc_makecommerce_domain'),
440 'desc' => __('enable SmartPOST courier shipping method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=shipping&section=courier_smartpost')).')',
441 'class' => '',
442 ),
443 array(
444 'id' => 'mk_checkout_sco',
445 'type' => 'checkbox',
446 'title' => __('SimpleCheckout', 'wc_makecommerce_domain'),
447 'desc' => __('enable SimpleCheckout&trade; Checkout method', 'wc_makecommerce_domain').' ('. sprintf(__('<a href="%s">module settings</a>', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=checkout&section=makecommerce_sc')).')',
448 'class' => '',
449 ),
450 array(
451 'id' => 'mk_product_slice',
452 'type' => 'checkbox',
453 'title' => __('Indivy Slice 3 information in product view', 'wc_makecommerce_domain'),
454 'desc' => __('enable Indivy Slice 3 in product view', 'wc_makecommerce_domain'),
455 'class' => '',
456 ),
457 array(
458 'id' => 'mk_javascript_ui',
459 'type' => 'api_javascript_ui',
460 ),
461 array('type' => 'sectionend', 'id' => 'mk_api_settings')
462 );
463 }
464
465 function mk_wc_version($version) {
466 global $woocommerce;
467 if ( version_compare( $woocommerce->version, "3.4.0", ">=" ) ) {
468 return true;
469 } else {
470 return false;
471 }
472 }
473
474 function mk_admin_save_api_settings() {
475 // reload banklinks
476 global $current_section;
477 if ($current_section !== 'mk_api') {
478 return;
479 }
480 update_mc_banklinks();
481 }
482
483 function mk_admin_plugin_settings_link($links) {
484 if (mk_wc_version("3.4.0"))
485 $settings_link = '<a href="admin.php?page=wc-settings&tab=advanced&section=mk_api">API '.__('Settings').'</a>';
486 else
487 $settings_link = '<a href="admin.php?page=wc-settings&tab=api&section=mk_api">API '.__('Settings').'</a>';
488 array_unshift($links, $settings_link);
489 return $links;
490 }
491
492 function wc_mc_shop_slice_button() {
493 if (get_option('mk_product_slice', 'no') == 'yes') {
494 global $product;
495 // $price_excl_tax = wc_get_price_excluding_tax( $product ); // price without VAT
496 $price_incl_tax = wc_get_price_including_tax( $product ); // price with VAT
497 global $wpdb;
498 global $mkDbTable;
499 $tableName = $wpdb->prefix . $mkDbTable;
500 $methods = $wpdb->get_results('SELECT * FROM '.$tableName);
501 $slice = false;
502 if(count($methods)) {
503 foreach ($methods as $method) {
504 if ($method->name =="slice") {
505 if ( $price_incl_tax >= $method->min_amount ) {
506 if ( $price_incl_tax <= $method->max_amount ) {
507 $slice = true;
508 }
509 }
510 }
511 }
512 }
513 if ($slice == true) {
514 echo '<div style="width:100%; margin-top: 20px; margin-bottom: auto;"><img src="'.plugins_url('/images/slice_logo_dark_176x62.svg', __FILE__).'" width="88" weight="31"/>&nbsp;&nbsp;Osta kohe, maksa hiljem. Kolmes võrdses osas 3 x '.sprintf("%.2f",$price_incl_tax/3).' €</div>'; // sprintf("%.2f",$price_incl_tax/3).' in month
515 }
516 }
517 }
518 // Slice Promo 1
519 add_action( 'woocommerce_after_add_to_cart_button', 'wc_mc_shop_slice_button', 20 );
520
521 // if (mk_wc_version("3.4.0")) {
522 add_filter('woocommerce_get_settings_advanced', 'mk_admin_api_settings', 10, 2);
523 add_action('woocommerce_get_sections_advanced', 'mk_admin_add_api_settings');
524 add_filter('woocommerce_get_settings_api', 'mk_admin_api_settings', 10, 2);
525 // } else {
526 add_action('woocommerce_get_sections_api', 'mk_admin_add_api_settings');
527 add_action('woocommerce_settings_saved', 'mk_admin_save_api_settings', 30, 0);
528 add_filter("plugin_action_links_".plugin_basename(__FILE__), 'mk_admin_plugin_settings_link' );
529 // }
530
531 function __get_logo_html() {
532 return '<div class="makecommerce-info">'.
533 '<div class="makecommerce-logo">'.
534 '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
535 '</div>'.
536 '<div class="makecommerce-links">'.
537 '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
538 '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
539 '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
540 '</div>'.
541 '</div>';
542 }
543
544 /* add new column (makecommerce_payment_method) to orders list */
545 function wc_makecommerce_payment_method_order_column($columns)
546 {
547 $columns['makecommerce_payment_method'] = __('Payment method (MC)');
548 return $columns;
549 }
550
551 add_filter('manage_edit-shop_order_columns', 'wc_makecommerce_payment_method_order_column');
552
553 // Make custom column sortable
554 add_filter( "manage_edit-shop_order_sortable_columns", 'makecommerce_payment_method_sortable' );
555 function makecommerce_payment_method_sortable($columns)
556 {
557 $meta_key = 'makecommerce_payment_method';
558 return wp_parse_args(array('makecommerce_payment_method' => $meta_key), $columns);
559 }
560
561 /* fill content for makecommerce_payment_method */
562 function wc_makecommerce_payment_method_order_column_content($column)
563 {
564 global $post;
565
566 if ('makecommerce_payment_method' === $column) {
567 echo get_post_meta($post->ID, '_makecommerce_preselected_method', true);
568 }
569 }
570
571 add_action('manage_shop_order_posts_custom_column', 'wc_makecommerce_payment_method_order_column_content');
572 }
573