Documentatia pluginului
Livrare cu cargus. Da posibilitarea utilizarii Cargus ca metoda de transport, gestionarea si crearea de awb-uri pentru comenzile livrate cu Cargus.
Important!! Pluginul Cargus vine ca un rebranding pentru pluginul deja existent UrgentCargus. Inaintea instalarii pluginului Cargus, daca pe site este prezent pluginul UrgentCargus, acesta trebuie dezinstalat intai si abia dupa se poate instala, activa si configura pluginul Cargus!
Generarea cheii API se obtine urmand pasii de mai jos:
Dupa urmarea pasilor de mai sus privind instalarea modului si pregatirea cheilor api. In sectiunea Woocommerce > Livrare vor aprea doua noi subsectiuni:
In acest pannel vor fi setarile principale pentru configurarea modulului Cargus.
Dupa ce se introduc adresa api-ului (URL Webservice: https://urgentcargus.azureapi.net/api), cheia, userul si parola si se salveaza setarile vor aparea campurile:
In acest pannel vor fi setarile pentru configurarea metodei de transport Cargus Ship&Go.
Cu ajutorul pluginului Cargus, utilizatorii pot folosi metodele de livrare Cargus: Livrare la domiciliu si Cargus Ship & Go. Acestia pot genera, printa sau sterge awb-urile pentru comenzile plasatate pe site, care folosesc ca metoda de livrare Cargus. Primul las penstu a putea folosit metodele de transport Cargus si Cargus Ship&Go este adaugarea celor doua metode de tranport intr-o zona de livrare.
Dup adaugarea metodelor de tranport Cargus, acestea vor fi vizibile in pagina de Cos si pagina de Checkout.
Odata cu activarea metodei de tranport Cargus Ship&Go se activeaza automat si o noua metoda de plata: Ramburs la Ship&Go. Aceasta metoda de plata este activa numai dupa selectarea metodei de transport Cargus Ship&Go.
Awb-ul poate fi creat doar pentru comenzi care folosesc ca metoda de transport una din cele doua metode Cargus( livrare la domiciliu, Ship&Go )
Creare AWB pentru o singura comanda.
Creare AWB pentru o mai multe comenzi deodata.
Awb-ul poate fi printat doar pentru comenzi pentru care a fost deja generat un AWB. Daca nu a fost deja generat un awb pentru o anumita comanda, acesta va fi generat automat si apoi va fi gata de printare.
Printare AWB pentru o singura comanda.
Printare AWB pentru o mai multe comenzi deodata.
Awb-ul poate fi sters doar pentru comenzi pentru care a fost deja generat un AWB. In urma acestei actiuni daca a fost generat un AWB anterior, acesta va vi sters iar pe comanda respectiva va aparea o nota indicand asta.
Stergere AWB pentru o singura comanda.
Stergere AWB pentru o mai multe comenzi deodata.
Unele atributea ale comenzii care au legatura cu livrarea pot fi modificate din sectiunea Detalii AWB. Aceasta sectiune se poate gasi in partea de jos a paginii de editarea a unei comenzi woocommerce.
In functie de Serviciul Cargus folosit (1 Standard, 34 Economic Standard, 39 Multipiece) pot fi editate urmatoarele campuri:
Toate campurile de mai sus vin precompletate cu valorile comenzii. Apasand butonul Adauga colet se poate adauga inca un colet comenzii, acesta poate contine doar produse existente deja in comanda. Butonul Elimina Colet poate elimina un colet numai in cazul in care acesta nu este singurl colet al comenzii.
Structura pluginului cargus este una destul de usor de modificat si dezvoltat de catre developeri, aceasta folosinduse in mare parte de hook-uri.
Exista doua clase principale:
Daca se vrea dezactivarea oricarei metode a vreunei dintre aceste clase putem folosi metoda urmatoare, pe care o putem pune in functions.php a temei child daca aceasta exista. Folosind functia remove_action
ne folosim de hook-ul folosit pentru a inregistra actiunea in primul rand, apoi, urmatorul parametru va fi un array compus din numele clasei al carei apartine metoda si numele metodei propriu-zise.
Exemplu:
add_action( 'admin_init', 'remove_admin_funtion', 20 ); function remove_admin_funtion() { if ( class_exists( "Cargus_Admin" ) ) { remove_action( 'admin_init', array( 'Cargus_Admin', 'cargus_order_admin_add_metabox' ) ); } }
Toate hook-urile folosite pentru a inregistra fiecare actiune se pot gasi in clasa Cargus
localizata in /wp-content/plugins/cargus/includes/class-cargus.php
Lista hook-uri disponibile pentru extinderea functionalitatilor admin pluginului:
cargus_update_order_meta_before_checkout
add_action( 'cargus_update_order_meta_before_checkout', 'add_custom_metadata', 20 ); function add_custom_metadata( $order, $data ) { if ( class_exists( "Cargus_Admin" ) ) { $order->update_meta_data( '_test_order_metadata', $data['test'] ); } }
name="test"
.cargus_before_create_awb
add_action( 'cargus_before_create_awb', 'modify_create_awb', 10 ); function modify_create_awb( $order_id, $cargus, fields ) { if ( class_exists( "Cargus_Admin" ) ) { if ( get_post_meta( $order_id, '_test_order_metadata',true ) === 'on' ) { $fields['SaturdayDelivery'] = false; } } return $fields; }
_test_order_metadata
.cargus_before_delete_awb
add_action( 'cargus_before_delete_awb', 'modify_delete_awb', 10 ); function modify_delete_awb( $order_id, $order, $cargus ) { if ( class_exists( "Cargus_Admin" ) ) { $order->update_meta_data( '_awb_deleted', true ); } }
cargus_before_print_awb
add_action( 'cargus_before_print_awb', 'modify_print_awb', 10 ); function modify_print_awb( $awbs_to_print, $cargus ) { if ( class_exists( "Cargus_Admin" ) ) { // scrie cod aici. } }
cargus_add_bulk_order_actions
// intai adaugam optiunea noua in dropdown. add_action( 'cargus_add_bulk_order_actions', 'modify_order_bulk_actions', 10 ); function modify_order_bulk_actions( actions ) { if ( class_exists( "Cargus_Admin" ) ) { $actions['cargus_new_option'] = __( 'Cargus Optiune noua', 'cargus' ); } } // apoi spunem ce sa faca cand este selectata optiunea noua. add_action( 'handle_bulk_actions-edit-shop_order', cargus_new_bulk_order_option, 10, 3 ); function cargus_new_bulk_order_option( $redirect_to, $action, $order_ids ) { if ( $action !== 'cargus_new_option' ) return $redirect_to; // Exit $processed_ids = array(); foreach ( $order_ids as $order_id ) { // scrie cod aici. $processed_ids[] = $order_id; } return $redirect_to = add_query_arg( array( 'cargus_new_attribute' => '1', 'processed_count' => count( $processed_ids ), 'processed_ids' => implode( ',', $processed_ids ), ), admin_url('edit.php?post_type=shop_order') ); } // apoi spunem ce sa notice sa apara dupa ce este selectata optiunea noua. function cargus_generate_awb_bulk_notice() { if ( empty( $_REQUEST['cargus_new_attribute'] ) ) return; // Exit $count = intval( $_REQUEST['processed_count'] ); $order_ids = $_REQUEST['processed_ids']; printf( '<div class="notice notice-success is-dismissible"><p>' . _n( 'Nota noua pentru %s comanda: ', 'Au fost generate awb-uri pentru %s comenzi: ', $count, 'cargus' ) . $order_ids . '.</p></div>', $count ); }
cargus_add_order_actions
// intai adaugam optiunea noua in dropdown. add_action( 'cargus_add_order_actions', 'modify_order_actions', 10 ); function modify_order_actions( actions ) { if ( class_exists( "Cargus_Admin" ) ) { $actions['cargus_new_option'] = __( 'Cargus Optiune noua', 'cargus' ); } } // apoi spunem ce sa faca cand este selectata optiunea noua. add_action( 'woocommerce_order_action_cargus_new_option', cargus_new_order_action, 10, 1 ); function cargus_new_order_action( $order ) { $order_id = $order->get_id(); // scrie cod aici. }
cargus_before_add_metabox
add_action( 'cargus_before_add_metabox', 'nodify_detalii_awb_fields', 10 ); function nodify_detalii_awb_fields( $args_form, $cargus ) { if ( class_exists( "Cargus_Admin" ) ) { // stergere primul camp. unset( $args_form['fields'][0] ); // stergere adaugare camp nou. $args_form['fields'][] = array( 'name' => 'cargus_livrare_sambata', 'label' => __( 'Livrare Sâmbăta', 'cargus' ), 'type' => 'checkbox', 'desc' => __( 'Activează livrarea sâmbăta.', 'cargus' ), 'class' => 'fb-meta-field', ); } }
Buton Ridicare personala
Daca se vrea mutarea pozitiei in pagina a butonului care afiseaza harta Ship&Go este necesara folosirea functia remove_action
pentru a deinregistra metoda cargus_display_map_button
a clasei Cargus_Public. Iar apoi putem folosi functia add_action
pentru a putea afisa butonul in alta locatie din cos sau checkout.
Exemplu:
// mutare locatie buton pagina cart. add_action( 'wp_loaded', 'cargus_change_ship_and_go_button_position', 20 ); function cargus_change_ship_and_go_button_position() { if ( class_exists( "Cargus_Public" ) ) { // on cart. remove_action( 'woocommerce_cart_totals_before_order_total', array( 'Cargus_Public', 'cargus_display_map_button' ) ); add_action( '{orice_hook_woocommerce_din_pagina_cart}', array( 'Cargus_Public', 'cargus_display_map_button' ) ); // on checkout. remove_action( 'woocommerce_review_order_before_order_total', array( 'Cargus_Public', 'cargus_display_map_button' ) ); add_action( '{orice_hook_woocommerce_din_pagina_checkout}', array( 'Cargus_Public', 'cargus_display_map_button' ) ); } }
Harta Ship&Go
Hook-ul folosit pentru a afisa harta ship and go este wp_body_open
. Exista pobisibilitatea ca o tema neactualizata sau care customizeaza prea tare pagina de cart sau checkout sa fi eliminata acest hook standard. In acest caz este necesara folosirea functia remove_action
pentru a deinregistra metoda cargus_display_map
a clasei Cargus_Public. Iar apoi putem folosi functia add_action
pentru a putea afisa harta in alta locatie din cos si checkout.
Exemplu:
// mutare locatie buton pagina cart. add_action( 'wp_loaded', 'cargus_change_ship_and_go_map_position', 20 ); function cargus_change_ship_and_go_map_position() { if ( class_exists( "Cargus_Public" ) ) { remove_action( 'wp_body_open', array( 'Cargus_Public', 'cargus_display_map' ) ); // on cart. add_action( '{orice_hook_woocommerce_din_pagina_cart}', array( 'Cargus_Public', 'cargus_display_map_button' ) ); // on checkout. add_action( '{orice_hook_woocommerce_din_pagina_checkout}', array( 'Cargus_Public', 'cargus_display_map_button' ) ); } }
Hook-uri folosite in popup-ul hartii Ship&Go:
Hook-uri folosite in email-uri: