WC Pickup Store

WC Pickup Store is a WooCommerce plugin that will help you to display stores on the Checkout page as a custom shipping method and also let your customers choose a store where their orders can be picked up.

Fortunately, it has been helpful to many people so I decided to write this article to be used as a basic and advanced documentation. Plugin and store settings, filters and actions, translations file location, and other information can be found in this article.

Don’t hesitate to contact me if you think that something important is missing about this article or the plugin. By the way, this is my first article in English, I hope you enjoy it! ūüôā

Contact information

Plugin options

Main options

Go to Main menu > Stores > Settings to edit the main options

  • Enable/Disable: Enable or disable the plugin.
  • Enable stores in checkout: Enable the store to be visible in the Checkout shipping options.
  • Shipping Method Title: Title for shipping method.
  • Shipping Costs Type: Use costs for this shipping method. Available options:
    • None (Disable)
    • Flat
    • Percentage
  • Shipping Costs: Main cost for shipping method. It can be overridden per store.
  • Enable costs per store: Manage shipping costs per store.
  • Order Stores by: Order by options for the dropdown in the shipping options. Available options:
    • Title
    • Date
    • ID
    • Random
  • Order: Ordering criteria. Available options:
    • ASC
    • DESC
  • Default store: Set up the default store to be displayed in the shipping options.
  • Checkout notification: Message to be displayed below the store dropdown on the Checkout page.
  • Hide store details on Checkout: This option hides the store details that are displayed by default in the shipping method options for the selected store.
  • Disable Bootstrap: Disable Bootstrap added by the plugin. Version: 3.3.7.
  • Disable Font Awesome: Disable Font Awesomeadded by the plugin. Version: 4.7.0.
  • Disable local css: Disable the stylesheet added by the plugin.

Store options

  • Checkout visibility: Allows you to hide a store in the store dropdown options.
  • Custom Fields: All these fields are optional but also useful:
    • City
    • Phone
    • Email Order Notification: Email that will be notified when the store is selected on the Checkout.
    • Enable order email notification: It activates the order notification for the selected store.
    • Waze
    • Map: Use the iframe source URL in this field.
    • Short description
    • Address
    • Feature image

Any doubts or suggestions?



  • Widget
  • WPBakery Page Builder (Visual composer) element
  • Archive page
  • Single Store page


This plugin has different templates that could be overwritten from your theme or child theme. Just clone the files located in wc-pickup-store/templates/ to custom-theme/templates-parts/ (only archive-store.php and single-store.php are overwritten in the root of your theme). Some of the available templates:

  • archive-store.php
  • selected-store-details.php: Added in versi√≥n 1.5.22 to display the selected store details on the Checkout page.
  • single-store.php
  • wrapper-store.php: Template to display store details in a widget section.
  • wrapper-vc_store.php: Template to display stores in a WPBakery Page Builder layout.
Store details on the Checkout
Widget layout

Any doubts or suggestions?



  • wps_store_query_args ($query_args): Filters the main store query.
  • wps_no_stores_availables_message ($message): Filters the message that appears on the Checkout when there are no stores availables.
  • wps_first_store ($first_store_name): Filters the default store that appears as first option on the Checkout.
  • wps_store_checkout_label ($stores_checkout_label): Filters the label that appears in the stores dropdown.
  • wps_shipping_method_label ($method_title): Filters the shipping method label.
  • wps_store_pickup_cost_label ($label, $selected_store): Filters the label of the selected store on the Checkout.
  • wps_get_store_custom_fields ($keys_arr): Filters the custom fields keys that will be prepared for the Checkout.
  • wps_stores_fields ($store_fields): Filters the custom fields array with the values that will be displayed on the Checkout.
  • wps_settings_data ($value, $setting_key, $settings): Filters the values of the plugin settings.
  • wps_order_shipping_item_label ($shipping_label, $notification_message): Filters the label for selected store that appears in the order details.
  • wps_subtotal_for_store_cost ($cart_subtotal): Filters the subtotal to be used in the percentage store shipping calculation.
  • wps_store_calculated_costs ($costs, $costs_type): Filters the store shipping cost.
  • wps_store_get_waze_icon ($waze_icon_img):
  • wps_store_get_vc_waze_icon ($waze_icon_img):
  • wps_store_city ($store_city, $store_id): Filters the store title displayed in the WPBakery Page Builder element.


  • wps_before_archive_store_content/wps_after_archive_store_content ($store_id)
  • wps_before_single_content/wps_after_single_content ($store_id)
  • wps_before_widget_content/wps_after_widget_content ($store_id)
  • wps_before_vc_content/wps_after_vc_content ($store_id)


This plugin has a .pot file located in the /languages/directory. Also, it includes es_CR translation and it’s been translated to cs_CZ language by a collaboration.

By KeylorCR

Hello world. My name is Keylor Mendoza from Costa Rica, a WordPress Developer with more than 5 years of experience working with custom themes and plugins. Strong experience working with WooCommerce customizations.

20 replies on “WC Pickup Store”

He estado probando tu plugin y funciona bien. No idea sobre que problemas de seguridad pueda tener.
Hay que agregar, tal vez en una version pro
Rate table per store
Day and time of delivery
Y un reservation for restaurant

Pregunta. porque es necesario crear un store como pagina para ser publicado, no puede ser en un modo privado y lo otro opcional, aparte de la configuración private and password protected.

Hola Teo, muchas gracias por las sugerencias, estoy planeando una versión Pro pero no tengo fecha de liberación.

Luego, ahorita se maneja de esa manera porque parte del origen del plugin fue para que se pudiera usar la misma información para el método de envío y para visualizar información de tiendas (widget, página, ocultar en Checkout, etc)


it would be a great extension if you could filter the stores for pickup depending on the current order (or products). Would it be possible to provide a filter hook for that and passing the WC order object to it?

Thanks in advance

Hey Andreas

Actually it can be possible by coding, maybe adding a custom field for products related to a store and after that use the filter of the plugin wps_store_query_args to update the meta_query fields.

This functionality is part of a Pro version that I am planning to develop soon.

Hope it helps


Hola Daniela

Para el mapa, el plugin acepta solo la URL que se obtiene del atributo src del iframe a insertar, no hay que agregar todo el iframe como tal. En el template se llama este campo y si agregó algo diferente entonces Google puede dar este error.


Thanks for you’re great plugin.
I try to make it working with WPML, and there is no big problem, but in the admin panel, there is an error. I ask to the WPML support and they said it could be resolve by changing the line 298 in the file /wp-content/plugins/wc-pickup-store/includes/wps-init.php
from add_action(‘init’, ‘wps_store_shipping_method_init’); to add_action(‘init’, ‘wps_store_shipping_method_init’, 2);

Don’t know if you can put it, in next release? Maybe?

And I have another question, how I can change the “Shipping method title” in accordance to the language switcher of WPML?

Thanks a lot

Hello Mathieu

First, well you don’t need my update to make it work as WPML support recommends to you, just simply use remove_action(‘init’, ‘wps_store_shipping_method_init’) and then the line they said.

Also, you can use these two filters from my plugin wps_shipping_method_label, wps_store_checkout_label or this one from WC woocommerce_cart_shipping_method_full_label and add your custom title compatible with WPML or any other plugin of languages.

Thank you too and I hope it is being helpful for you

Muy buen plugin! funciona genial!
Un problema que me he encontrado es que para pedidos que se hacen desde fuera de mi ciudad, la opci√≥n de “Local Pickup” sigue apareciendo.
¬ŅComo podr√≠a ocultar la opci√≥n Local Pickup y mostrarla solo para una √ļnica ciudad?

Hola buenos días, primero que nada muchas gracias por el plugin lo he estado probando en una página y es muy bueno, una duda el plugin es compatible para multisitios? lo trate de instalar pero al activarlo no paso nada

Hola Luis, s√≠ lo tengo instalado y funcionando en multisites, qu√© error te sale cuando lo activ√°s? Pod√©s tambi√©n intentar activarlo de manera individual o revisar si es que est√° siendo incompatible con alg√ļn otro plugin.

Quedo atento

Hola Keylor gracias por el Plugin esta muy bueno.
Tengo un problemita, al instalarlo me cambia la tipografía que tengo predeterminada para mi página es algo rarisimo, pero lo probé desinstalandolo y volvio a la normalidad, que será.

Hola Fabi√°n

En este caso, puede ser por incompatibilidad con Bootstrap ya que el plugin carga por defecto la versión 3.3.7, quizás por ahí ande el problema.

Podés desactivarlo desde las configuraciones del plugin desde Stores > Settings > Disable Bootstrap

Hola Patricio, en este caso podés usar el hook wps_store_checkout_label y sobreescribir el título que se muestra con texto traducible desde el tema que estás trabajando. Saludos.

Hola! muy bueno el plugin. Te hago una consulta, Estoy creando un mail personalizado, con WordPress booster, para enviar un mail al cliente, avisandole que su producto ya esta listo para retirar.
Hay un shortcode para Booster en donde pueda mostrar en ese email la sucursal seleccionada por el usuario?
Porque usando [wcj_order_shipping_method] solo me trae el metodo seleccionado, pero NO que sucursal selecciono.

Hola Luciano, para este caso el nombre de la tienda se guarda en un campo custom _shipping_pickup_stores y no tengo shortcode para Booster. Podés ver si hay un shorcode para cargar custom fields o crear un shortcode con un código similar a este:

$order_id = $order->get_id();
$store_name = get_post_meta($order_id, '_shipping_pickup_stores', true); // Get store title for this order
$store = get_page_by_title($store_name, OBJECT, 'store'); // Get the store object by the title
$store_phone = get_post_meta($store->ID, 'phone', true); //Get a custom field, phone

Te dejo un gist que te puede ayudar.

Leave a Reply

Your email address will not be published. Required fields are marked *