Pozdravljeni,
Kot sem že omenila pred kratkim delamo na selitvi trgovine z preste na woocommerce.
Gleda na to, da je po defaultu WooCommerce kar oskubljen kar se funkcionalnosti tiče in so vsi plugini kar dragi (tisti malo bolj koristni), sploh glede na to, da je treba za vsako figo kupit plugin al pa kodo spreminjat/dodajat, sem se odločila, da odprem to temo kjer bi delili kakšen uporaben snippet, torej kodo s katero bi dodali ali razdelali določene funkcije, ki jih po defaultu pogrešamo.
Sama sem prosila fanta, da deli kakšen snippet in za začetek imam priravljenih nekaj malenkosti...
Naj prvo povem za tiste, ki ne vedo kam to dodajati, da morajo iti v theme editor, tam poiščejo functions.php in čisto na koncu tega fajla vpisujejo te kode.
#1. V adminu, na seznamu izdelkov sem zelo pogrešala število artiklov, ki so na zalogi, saj po defaultu piše samo "in stock" ali "out of stock", nič pa ne vemo koliko jih je dokler izdelka ne odpremo.
takole izgleda po defaultu:
http://imgur.com/a/677pC
in takole po dodani kodi:
http://imgur.com/a/OluZ5
Koda:
//pokaži količino zaloge v admin products list
addfilter( 'woocommerceadminstockhtml', 'tmtshowvariationstocklevel', 10, 2 );
function tmtshowvariationstocklevel( $stockhtml, $theproduct ) {
if( sizeof( $the_product->get_children() ) ) {
$stock_html .= ' (' . $the_product->get_total_stock() . ')';
}
return $stock_html;
}
#2. Ko nekdo prekliče naročilo ali pa ga vrne in podobno se v woocommercu zaloga ne povrne avtomatsko nazaj ampak moraš to ročno storiti sam...
Da bi naredili avtomatski RESTOCK uporabimo naslednjo funkcijo/kodo:
//Auto restock function
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if ( ! classexists( 'WCAutoStockRestore' ) ) {
class WCAutoStockRestore {
public function _construct() {
addaction( 'woocommerceorderstatusprocessingtocancelled', array( $this, 'restoreorderstock' ), 10, 1 );
addaction( 'woocommerceorderstatuscompletedtocancelled', array( $this, 'restoreorderstock' ), 10, 1 );
addaction( 'woocommerceorderstatuson-holdtocancelled', array( $this, 'restoreorderstock' ), 10, 1 );
addaction( 'woocommerceorderstatusprocessingtorefunded', array( $this, 'restoreorderstock' ), 10, 1 );
addaction( 'woocommerceorderstatuscompletedtorefunded', array( $this, 'restoreorderstock' ), 10, 1 );
addaction( 'woocommerceorderstatuson-holdtorefunded', array( $this, 'restoreorderstock' ), 10, 1 );
} // End _construct()
public function restoreorderstock( $orderid ) {
$order = new WCOrder( $orderid );
if ( ! getoption('woocommercemanagestock') == 'yes' && ! sizeof( $order->getitems() ) > 0 ) {
return;
}
foreach ( $order->getitems() as $item ) {
if ( $item['productid'] > 0 ) {
$product = $order->getproductfromitem( $item );
if ( $product && $product->exists() && $product->managingstock() ) {
$oldstock = $product->stock;
$qty = applyfilters( 'woocommerceorderitemquantity', $item['qty'], $this, $item );
$newquantity = $product->increasestock( $qty );
doaction( 'woocommerceautostockrestored', $product, $item );
$order->addordernote( sprintf( _( 'Item #%s stock incremented from %s to %s.', 'woocommerce' ), $item['productid'], $oldstock, $newquantity) );
$order->sendstocknotifications( $product, $newquantity, $item['qty'] );
}
}
}
} // End restoreorderstock()
}
$GLOBALS['wcautostockrestore'] = new WCAutoStockRestore();
}
Takole, to sta prvi dve za pokušino... več pa še pride. :)
Upam, da se najde kdo, ki mu bo to koristilo.