affiliate-toolkit kann beim Import von Produkten prüfen ob dieses bereits existiert. Standardmäßig ist die Funktion deaktiviert und kann in den Einstellungen aktiviert werden.
Die Überprüfung ob das Produkt bereits existert kann man unter erweiterte Einstellungen aktivieren.
Sobald diese aktiviert ist, werden die Produkte beim anlegen geprüft:
Es werden die folgenden Kriterien geprüft:
Wichtig: Es werden nur die Daten überprüft welche übergeben werden. Wird z.b. kein Titel übergeben, wird auch nicht der Titel überprüft.
Möchte man das ganze erweitern, kann man dies mittels eigenen Hook machen.
add_filter( 'atkp_post_exists', 'atkp_post_exists_callback', 10, 7 );
/**
* @param $post_id
* @param $shopid
* @param $asin
* @param $asintype
* @param $title
* @param $brand
* @param $mpn
*
* @return int|null
*/
function atkp_post_exists_callback( $post_id, $shopid, $asin, $asintype, $title, $brand, $mpn ) {
return $post_id;
}
Da es technisch nicht möglich ist vor dem anlegen des Produktes auf die API zuzugreifen und das Produkt dort zu prüfen, muss man das Produkt vorher anlegen. Das bedeutet allerdings, das pro Produkt ein zusätzlicher Request stattfindet und dieser auch den Import bremst.
add_filter( 'atkp_post_exists', 'atkp_post_exists_callback', 20, 7 );
/**
* @param $post_id
* @param $shopid
* @param $asin
* @param $asintype
* @param $title
* @param $brand
* @param $mpn
*
* @return int|null
*/
function atkp_post_exists_callback( $post_id, $shopid, $asin, $asintype, $title, $brand, $mpn ) {
//$post_id already found
if($post_id == -1 || $post_id > 0)
return $post_id;
$shop = $shopid == '' ? null : atkp_shop::load( $shopid );
if($shop == null || $shop->provider == null)
return $post_id;
try {
$message = $shop->provider->checklogon( $shop );
} catch ( Exception $e ) {
return $post_id;
}
$atresponse = $shop->provider->retrieve_products( array($asin), strtoupper($asintype) );
if( $atresponse->errormessage != '' || count($atresponse->responseitems) == 0) {
return $post_id;
}
$product_item = $atresponse->responseitems[0]->productitem;
$post_id = apply_filters( 'atkp_post_exists', -1, $shopid, $asin, $asintype, $product_item->title, $product_item->brand, $product_item->mpn );
if($post_id <= -1)
$post_id = 0;
return $post_id;
}