WC Pickup Store

Great! A new review for this plugin is coming from the people who offered the WordPress Quiz plugin.

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! ūüôā

Now you can read a review about this plugin from WPGlob in this link.

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.

60 replies on “WC Pickup Store”

Your plugin is great. But i have an issue.
I’m using wc pickup store v 1.8.6 and woocommerce v 8.7.0. Certainly due to the woocommerce version upgrade, the names of the stores disapear from the order recap and in the json answer of a GET request (tested with Insomnia). The problem is that it’s impossible to know in which store the order can be delivered. We are using Google sheet scripts to handle the various stocks for the pickups and due to this issue, we cannot handle their stocks.


Hi, I like what you’ve created. Cleans up my checkout field when I have many pickup locations. Could you point me in the right direction for how to change ‘select a store’ in the dropdown? My customer offers click & collect from markets, so it’s more appropriate to change that to ‘select a market’. Many thanks!!

Hola, quisiera cambiar la direcci√≥n de entrega en un pedido la tienda, pero no me deja cambiarlo, no sale un desplegable, √ļnicamente el nombre de la tienda y no es editable, me puedes ayudar a hacerlo?

Hola, necesito traducir a espa√Īol el mensaje que aparece bajo el metodo de envio que dice: Choose a store for picking up your oder on the Checkout page. Como puedo hacer esto?


Hola Paola, en este caso podrías usar Loco Translate, buscar la traducción del plugin y editar este texto. En caso que no se muestre, puede usar la opción de sincronizar la traducción para que le busque el texto y le permita traducirlo.

Hi Keylor, nice plugin. I am testing it but it does not send the order to the email assigned to the store.
Another thing: how can I make the name of the store where it was purchased appear in the order email? thanks!!

Hey Angel, I’ve tested this functionality and it works as expected, a copy of the order is sent to the admin of the store. Also, I am not sure what you mean by the store where it was purchased, but the chosen store name is displayed in the order details table (page and email)

Email me in case you need further assistance.


Hola Keylor. Lo primero felicitarte por el plugin, est√° genial!

Me gustar√≠a que WC Pickup Store fuese la opci√≥n de env√≠o predeterminada sin tener que hacer click en el radio button manualmente. ¬ŅC√≥mo puedo conseguirlo?

Por otro lado, he querido ordenar las tiendas del Widget pero no existe esta opci√≥n. Los ajustes de de orden de la consulta s√≥lo afectan al desplegable del check-out, no al widget. Estar√≠a bien que fuesen comunes. He tenido que modificar el c√≥digo del widget en class-widget-stores.php para introducir manualmente los argumentos $query_args[‘orderby’] = ‘title’ y $query_args[‘order’] = ‘asc’.

Muchas gracias y buen día.

Hola, cómo puedo hacer para que Wc Pickup Store sea la opción de metodo de envío por defecto (que esté primero en la lista de los metodos de envio en el checkout). por encima de otras opciones.

Great plugin!
However the google map is not showing, I entered the link in the store config. At checkout it says “ refused to connect” Also Waze is also not being shown and i have the link configured. How do we fix this?

Hello there!

I think this is an issue related to the map service. I will be checking this issue soon.

Thank you for your report.


I am using the WC pickup store plugin.
I have a payment method called cash on pickup.
Can I set this payment method just for one of my pickup stores?

Thank you,

The code is working but it ruins my cart page. What would be the problem?

Thank you,

Hi Bal√°zs, what kind of error or problem do you have with your cart page?

If the problem persists, you can also send me a message via the contact form and attach a screenshot.

Hola, estoy tentando de traducir el mensage que aparece en el “Cart”, bajo el methodo de shipping.

Ahora esta diciendo esto : Choose a store for picking up your oder on the Checkout page. Pero me gustaria traducirlo en frances. Donde puedo hacer esto? Tengo Loco Translate pero no encontro el string para cambiarlo.


Hola Nicolas, puede actualizar el plugin a la versión 1.7.3 que resuelve el problema con la plantilla de idioma (.pot). Seguido, usando Loco Translate, sincronice la traducción y ya le debe aparecer este nuevo texto para traducir.


Hola Keylor, estoy intentando cambiar el mensaje “Choose a store for picking up your order on the Checkout page.” en la p√°gina de carrito, pero me es imposible. Lo he intentado con Loco Translate y tambi√©n modificando el archivo .po pero no funciona de ninguna forma. ¬ŅPodr√≠a darme alguna soluci√≥n? Gracias de antemano.

Hola Fran, la nueva versión 1.7.3 resuelve un problema con la plantilla de idioma (.pot). Luego con Loco Translate, sincronice la traducción y ya le debe aparecer este nuevo texto para traducir.


Hey Kevin, you have to set the default store option as None from customizer options:

Using this, the previously chosen store of a customer will be shown as default on the Checkout page.

Hope it helps.

Hola, Keylor. Muchas gracias por el plugin y por que lo ofrece gratis. Me ha ayudado mucho. Mi duda es si se puede a√Īadir html code al campo de tel√©fono, como <a href=‚ÄĚtel…. para hacer llamada por un click a tienda desde la p√°gina de checkout?

Hola Pável, esto lo puede lograr sobreescribiendo el template selected-store-details.php en theme-custom/template-parts/ y ahí agrega el html necesario.

Espero le sea de ayuda.
Pura vida!

I’m very interested in your plugin for wordpress, but i need to fill the fields using java code. Do you have some kind of api for java for your plugin. I’m already using woocomerce java api and creating products through it, but i also need to have store location can you help me with your plugin. It is very good. Thanks

Hello Ivan, I hope you are well and that my plugin is being helpful for you.

The stores are created by a Custom Post Type of WordPress and it uses custom fields to manage all the information. So in this case, you need to look for an integration based on CPT and custom fields. Unfortunately, I don’t have an API or support for external connections.


Hello, i would like to know if it is possible to define which products could be sold on specific pickup stores. Ex : product1 on storeA, products1 and 2 on storeB, etc…
Tank you

Hello Bonin, I’m sorry for the delay in attending to your message.

This is not possible with this plugin, but if you still need it I might help you with custom development to accomplish this.

Keep in touch.

Hi Keylor, I send your a message last week but not sure if you received it! I am using the “WC Pickup Store” plugin now. It helps me a lot an I really like it. However, I have 2 queries about it and hope you can help me! 1) The product is pick up on different store location and we will charge a shipping cost by the weight of it, but I can only select the “flat rate” or “percentage” on it, how can I do it? Need to upgrade to a pro version?? 2) In the “Short description”, I use it to input the office hour information for each store, but it didn’t show on the store pickup view, how can I show it to the customer? Did I need to modify any coding of the plugin? Hope to hear from you soon and have a nice day! Gary

Hello Gary, I hope you’re fine.

A PRO version is in progress for the future and for your questions:

1- You have to programmatically change the cost using the filter wps_shipping_costs based on this gist:
2- To show custom data to customers into emails or any other part, you can use this gist as a guide:

I really hope this helps you and thank you for using my plugin.

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.

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 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 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

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?


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

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.


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


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)

Leave a Reply

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

Don’t hesitate to contact me if you need further information about my plugins or any help.