För ett pågående webbprojekt migrerar vi en e-shop från Zen Cart till WooCommerce. En av många utmaningar för denna typ av projekt är att skapa samma funktionalitet i det nya adminsystemet som kunden är van vid sedan tidigare.

WooCommerce - upsellsEn sådan funktion var relaterad till up-sells – att sälja relaterade (ofta dyrare) produkter till en potentiell kund – på varje produktsida. I Zen Cart kunde vår kund se vilka produktsidor en specifik produkt hade lagts till som up-sell. För varje produkt på sidan visar dom alltid tre relaterade produkter, så ifall en produkt tas ur sortiment, behöver de lägga till en ny up-sell.

I WooCommerce kunde vi inte hitta en sådan funktion, så istället för att vår kund skulle behöva komma ihåg vilka produktsidor en specifik produkt lagts till som up-sell – inte helt lätt med runt 350 produkter – så byggde vi en specialfunktion istället

Målet var att integrera funktionen direkt på varje adminsida för en produkt, så att relationen till up-sells snabbt kunde överskådas. Vi skrev en kodsnutt som lägger till dessa produkter under Linked Produkts-tabben, vilket håller allt samlat.

[php]
function woocommerce_product_options_related() {
global $post;
$current = $post->ID;
$args = array(
’posts_per_page’ => -1,
’post_type’ => ’product’,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
echo ’<ul>’;
while ( $query->have_posts() ) : $query->the_post();
$upsells = get_post_meta( get_the_ID(), ’_upsell_ids’, true );
if (is_array($upsells) && in_array($current, $upsells)) {
echo ’<li><a href="’ . admin_url( ’post.php?post=’ . get_the_ID() ) . ’&action=edit">’ . get_the_title() . ’</a></li>’;
}
endwhile;
wp_reset_postdata();
echo ’</ul>’;
}
}
add_filter(’woocommerce_product_options_related’, ’woocommerce_product_options_related’);
[/php]

WooCommerce sparar alla ID-nummer för produkter som läggs till som up-sells för en specifik produkt. Så vi kollar igenom listan på produkter and hämtar alla produkter som har ett meta ID-värde som är samma som produkten som visas. Sen listas dessa produkter, med länkar som går direkt till dom produkterna i admin.