Categories
וורדפרס

ווקומרס

ובחזרה לעתיד.

ווקומרס הינו תוסף הוורדפרס הפופולרי ביותר ליצירת אתרי מסחר אלקטרוני. מאפשרויות סליקה רבות, ניהול הזמנות, סוגי משלוחים ועד הגדרות מלאי, התוסף מכסה את כל הדרישות שעלולות לצוץ ביצירת אתרי מסחר אלקטרוני.

לעריכת הטקסט של לחצן התפריט במובייל בתבנית Storefront:

add_filter( 'storefront_menu_toggle_text', 'condless_storefront_menu_toggle_text' );
function condless_storefront_menu_toggle_text( $text ) {
	$text = __( 'תפריט' );
	return $text;
}

הגדרת משלוח חינם למוצרים ספציפיים: להוסיף "סוג משלוח" בשם משלוח חינם, לסמן במוצר הרצוי את סוג משלוח זה, להוסיף ב-"אזורי משלוח" אזור חדש עם תעריף קבוע ולהגדיר תעריף 0.

ייצוא וייבוא מוצרים באתר בעברית: ליצור מוצר בווקומרס, לייצא את המוצרים לקובץ CSV, להוסיף בקובץ מוצרים, לקודד ל-UTF-8 (ניתן על ידי ייבוא וייצוא מגוגל שיטס), לייבא לווקומרס.

שינוי אוטומטי של מצב ההזמנה מ"בהשהייה" ל"בטיפול", למשל כדי לאפשר ללקוח שמשלם בהעברה בנקאית (אשר לוקחת זמן) לצפות בלינק ההורדה של מוצר דיגיטלי בדף "ההזמנה התקבלה" (אחרי רענון הדף):

add_action( 'woocommerce_thankyou', 'condless_woocommerce_auto_processing_orders');
function condless_woocommerce_auto_processing_orders( $order_id ) {
    if ( ! $order_id )
        return;
    $order = wc_get_order( $order_id );
    if( $order->has_status( 'on-hold' ) ) {
        $order->update_status( 'processing' );
    }
}

שינוי סדר הופעת התיבות בדף התשלום:

add_filter( "woocommerce_checkout_fields", "condless_reordering_checkout_fields", 15, 1 );
function condless_reordering_checkout_fields( $fields ) {
    $billing_order = array(
        'billing_first_name',
        'billing_last_name',
        'billing_email',
        'billing_phone',
        'billing_company',
        'billing_address_1',
        'billing_address_2',
        'billing_postcode',
        'billing_city',
        'billing_state',
        'billing_country'
    );
    $count = 0;
    $priority = 10;
    foreach($billing_order as $field_name){
        $count++;
        $fields['billing'][$field_name]['priority'] = $count * $priority;
    }
    $fields['billing']['billing_email']['class'] = array('form-row-first');
    $fields['billing']['billing_phone']['class'] = array('form-row-last');
    $fields['billing']['billing_postcode']['class'] = array('form-row-first');
    $fields['billing']['billing_city']['class'] = array('form-row-last');
    return $fields;
}

הסתרה של וריאציות מסוימות במוצר:

add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'condless_hide_dropdown_variation_args', 10, 1 );
function condless_hide_dropdown_variation_args( $args ) {
    $args['show_option_none'] = false;
    foreach( $args['options'] as $key => $option ){
        if( $option === "2,5 kg" ) {
            unset($args['options'][$key]);
        }
    }
    return $args;
}

הוספת ולדיציות לשדות בדף התשלום. לדוגמא, כדי לאפשר תווי ASCII בלבד (כמו גם לא לאפשר אותיות שלא באנגלית):

add_action( 'woocommerce_after_checkout_validation', 'condless_ascii_validate_checkout', 10, 2);
function condless_ascii_validate_checkout( $fields, $errors ){
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_first_name' ] ))
$errors->add( 'validation', '<strong>Billing First name</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_last_name' ] ))
$errors->add( 'validation', '<strong>Billing Last name</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_company' ] ))
$errors->add( 'validation', '<strong>Billing Company</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_address_1' ] ))
$errors->add( 'validation', '<strong>Billing Address</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_address_2' ] ))
$errors->add( 'validation', '<strong>Billing Address details</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'billing_city' ] ))
$errors->add( 'validation', '<strong>Billing City</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_first_name' ] ))
$errors->add( 'validation', '<strong>Shipping First name</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_last_name' ] ))
$errors->add( 'validation', '<strong>Shipping Last name</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_company' ] ))
$errors->add( 'validation', '<strong>Shipping Company</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_address_1' ] ))
$errors->add( 'validation', '<strong>Shipping Address</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_address_2' ] ))
$errors->add( 'validation', '<strong>Shipping Address details</strong> contains non-English letters.' );
if (preg_match( '/[^[:ascii:]]/', $fields[ 'shipping_city' ] ))
$errors->add( 'validation', '<strong>Shipping City</strong> contains non-English letters.' );
}

ביצוע מניפולציות בתצוגה של מחיר המוצר, למשל כדי להציג את ההנחה במוצר שבמבצע:

add_filter( 'woocommerce_get_price_html', 'condless_simple_product_price_format', 10, 2 );
function condless_simple_product_price_format( $price, $product ) {
   if ( $product->is_on_sale() && $product->is_type('simple') ) {
      $price = sprintf( __( '<div class="was-now-save"><div class="was">היה %1$s</div><div class="now">עכשיו %2$s</div><div class="save">חסוך %3$s</div></div>', 'woocommerce' ), wc_price ( $product->get_regular_price() ), wc_price( $product->get_sale_price() ), wc_price( $product->get_regular_price() - $product->get_sale_price() )  );      
   }
   return $price;
}

הצגת מחיר המוצר כולל ולא כולל מע"מ ואת סכום המע"מ:

add_filter( 'woocommerce_get_price_suffix', 'condless_price_vat_suffix', 10, 4 );
function condless_price_vat_suffix( $html, $instance, $price, $qty ) {
if ( is_product() ) {
        $html .=  ' + ' . wc_price(wc_get_price_including_tax($instance) - wc_get_price_excluding_tax($instance)) . ' מע"מ =  ' . wc_price(wc_get_price_including_tax($instance)); }
        return $html;
}

הסרת ההודעות על מוצר שנוסף/הוסר:

add_filter( 'wc_add_to_cart_message_html', '__return_null');
add_filter('woocommerce_cart_item_removed_notice_type', '__return_null');

פגישות והזמנות.

סיטונאות.

התאמה אישית של המוצרים.

שחזור תוכן של עגלות שננטשו.

אפשרויות למשלוח חינם.

יישום אוטומטי של קופון בעגלה.

מעקב משלוחים (כולל דואר ישראל).

הוספת שיטות תשלום לאפליקציות תשלום חסרות API (כמו ביט (Bit), פפר פיי (PepperPay) ופייבוקס (PayBox)).

עמלות והנחות לפי שיטת תשלום.

הנחות מורכבות.

קביעת שיטת תשלום פר מוצר.

הוספת צורת תשלום של "בקשה להצעת מחיר".

איסוף כספים.

עריכה קבוצתית למוצרים עם וריאציות.

סינון מוצרים.

ריבוי ספקים.

מכירת קורסים. אם קבצי הוידאו לא נמצאים באתר עצמו ליצור פוסט לכל קורס עם הוידאו מוטמע, ליצור בווקומרס מוצר וירטואלי לכל קורס וידאו עם לינק לקובץ הוידאו (אם קבצי הוידאו באתר) / לפוסט (אם הוידאו מוטמע), להגדיר בכל קובץ וידאו (אם קבצי הוידאו באתר) / פוסט (אם הוידאו מוטמע) שרק מי שרכש את המוצר התואם בווקומרס רשאי לצפות בו. להתאמת התוסף לשפות הנכתבות מימין לשמאל:

add_action('admin_head', 'condless_admin_custom_css');
function condless_admin_custom_css() {
	echo '<style>.chosen-container .chosen-drop { left: 9999px; } </style>'; 
}

כפי שבוודאי שמתם לב- חברת Jigowatt, המפתחת של Jigoshop שעליה מבוסס הקוד של ווקומרס, נקראה על שם הטעות בהגיית המלה Gigawatt בסרט בחזרה לעתיד.