WPPizza – A Restaurant Plugin


  • Conceived for Pizza Delivery Businesses, but flexible enough to serve any restaurant type.

  • Maintain your restaurant menu online and accept cash on delivery orders.

  • Set categories, multiple prices per item and descriptions.

  • Multilingual Frontend (just update labels in admin settings page and/or widget as required). WPML compatible.

  • Multisite enabled

  • Keeps track of your online orders.

  • Shortcode enabled. (see complete shortcode list)

To see the plugin in action with different themes try it at demo.wp-pizza.com

If you wish to allow your customers to add additional ingredients to any given menu item, have a look at the premium “WPPizza Add Ingredients” extension

Premium extensions available:

Additional payment gateways to process credit card payments instead of just “Cash on Delivery”

Translations provided by:

  • Italien: Silvia Palandri
  • Hebrew: Yair10 [הלב בניית אתרים ]
  • Dutch: Jelmer
  • Spanish: Andrew Kurtis at WebHostingHub
  • German: Franz Rufnak, Witali Opfer

Many, many thanks guys and girls.

Note: As the plugin gets updated over time and has some other strings and features added, the translations above (and future ones) are likely to have some not-yet-translated strings. If you wish, feel free to provide any of those missing and I will update the translations accordingly.

If you want to contribute your own translation, feel free to send me your files and I will be more than happy to include them.

Demo Icons:

Please note that the icons used in the demo installation are iconarchive.com icons and not for commercial use.
If you do wish to use any icon from this set commercially, please follow this link to purchase it.

Allergen/Foodtype Icons (credit where credit is due):

Allergen/Foodtype Icons – though modified and with the exceptions stated below – are courtesy of icon-icons.com
Foodtype Vegetarian/Vegan Icons courtesy of vectorstock.com
Halal/Kosher Icons specifically created for this plugin.
Note: Allergen/Foodtype Icons included with this plugin can be used on your site ‘as is’ and without any attribution


  • Frontend
  • Frontend (Different Theme) - minicart only
  • Frontend - Grid Layout
  • Frontend - Order Page
  • Frontend - Thank You Page
  • Frontend - Purchase History (registered user)
  • Admin - Menu items - quick edit
  • Admin - Global Settings (excerpt)
  • Admin - Order Settings (excerpt)
  • Admin - Opening Times
  • Admin - Additives
  • Admin - Layout (excerpt)
  • Admin - Localization (excerpt)
  • Admin - Registered customers
  • Admin - Tools
  • Admin - Tools (GDPR)
  • Admin - Access Rights
  • Admin - Order Form
  • Admin - Sales Reports
  • Admin - Widget



  1. Download the plugin and upload the entire wppizza folder to the /wp-content/plugins/ directory.
    Alternatively you can download and install WPPizza using the built in WordPress plugin installer.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. You will find all configuration and menu options in your administration sidebar

Things to do on first install

For consistency, this document has now moved to the following location :
** I strongly encourage you to read it **


Please note:
Although all options, menu items and menu categories get deleted from the database along with the table that holds any orders you may have received, you will manually have to delete any additional pages (such as the order page for example) that have been created as i have no way of knowing if you are using this page elsewhere or have changed the content/name of it.
The same goes for the 3 example icons that come with this plugin as they might be in use elsewhere.


General Faq’s

for consistency and manageability the faq’s have been moved to https://docs.wp-pizza.com/faqs/


please refer to https://docs.wp-pizza.com/shortcodes/

How can I submit a bug, ask for help or request a new feature?


May 26, 2020
This plug-in has helped save my clients business as they move from a full-service restaurant to take-out and delivery during the pandemic. We were able to roll out a fully functional online ordering system with ease and at minimal expense. Easy for the client to use and customizations for just about everything. The few questions I've had or glitches I've encountered were addressed almost immediately through the forum or by email, with great solutions and - when needed - plugin updates rolled out next day. This is one of the best business-changing plugins I've used. I highly recommend it. And best of all, try it out the free version to work out the integrations and designs so you can be sure it works well with your site. Thank you Oliver!
April 3, 2020
Thanks a lot for this plugin! I installed it for two restaurants next door - they had to switch to delivery and take-away from one day to the other (corona virus restrictions). With your plugin and just a few hours of configuration and testing, they are now (hopefully) able to survive economically during the corona crisis. Your plugin is awesome!
February 28, 2019
Our requirements were an elegant and fully customizable room service ordering system for our 5-star boutique hotel... and WP-Pizza delivered! 😉 The interface is super clean and offers our guests a great user experience. Support is amazing. Do not be deceived by the name, WP-Pizza is a very powerful and versatile tool for anyone selling anything where a seamless and great user experience is key. This is not Woocommerce's strong suit.
December 26, 2017
Yesterday i deliver my first customer website with wppizza and several addons: wppizza (Basic) and payd addons: wppizza-add-ingredients, wppizza-delivery-by-postcode, wppizza-gateway-paypal, wppizza-google-cloudprint and wppizza-pickup-prices. All addons working like a charm! not one did not do as expected and none have problems! And most of all, there was always the developer Oliver who offered help with any questions. Thanks Oliver!
November 18, 2017
This simply allows you to add an ordering system to a site. It's straight forward and offers about anything you could need. Great product! Thanks!
Read all 52 reviews

Contributors & Developers

“WPPizza – A Restaurant Plugin” is open source software. The following people have contributed to this plugin.



* Fix: Added missing js trigger for admin refund status update
10th September 2020

* Added: Choice of standard allergens (with optional icons) under “WPPizza->Additives”
* Added: Choice of some common foodtypes (with optional icons) under “WPPizza->Additives”
* Added: pt_BR, pt_PT localization
* Updated: various other localization po/mo files
* Tweak: do not change navigation menu title of order page (if displayed in navigation menu) on order completion/cancellation etc
* Tweak: Minor css updates (SKU related – if used)
* Tweak: Default initial reports range to last 30 Days
* Fix: Some more potential phpnotices eliminated
28th August 2020

* Added: Optionally allow to add percentage selection to tips on checkout (WPPizza -> Order Settings)
* Tweak: A bit more consistency in a few text strings, to eliminate some superflous text strings in any translations
* Fix: Make sure to also add #wppizza-cart-json data if minicart is enabled only without the main cart being displayed
26th June 2020

* Fix: Templates sections – though saved in the right order – not displayed in the right order in WPPizza->Templates
* Fix: Todays orders totals not shown in admin dashboard widget
* Fix: decode entities in address search url [wppizza_admin type=’admin_orderhistory’] shortcode
* Tweak: Make address search url [wppizza_admin type=’admin_orderhistory’] filterable
* Tweak: Allow for multiple user id or ip address for testing things even when shop is naturally closed (WPPizza->Tools)
* Tweak: Minor css tweak in thank you page for ‘label’ elements
21st June 2020

* Tweak/Maintenenace: reduce memory consumption for “WPPizza -> Reports” page as well as admin dashboard widget
* Tweak/Maintenenace: repair serialization errors – if any – in reports data of orders (might be required for some old/legacy orders)
10th June 2020

* Added: Search by email, transaction id, order id in “Wppizza-> Order History”
* Added: Allow query for transaction id in ‘wppizza_get_orders()’ function
* Fix: Some edgecase phpnotices eliminated
* Tweak: Updated some verbiage in admin
* Tweak: Added postid as parameter to ‘wppizza_filter_quick_edit_link_functions’ and ‘wppizza_filter_save_quick_edit_data’ filter
* Tweak: Capture some more data in error logs
4th June 2020

* Tweak: Deleted some unused files
* Added: Allow dates of custom opening times to repeat yearly
* Added: Display minimum order value in minicart cartdetails if not reached
* Fix: Some scripts were unnecessarily enqueued on checkout if cart is empty (also eliminates some potential false positive error emails )
26th May 2020

* Note: Apologies for the flurry of updates in the last few days – am trying to solve an edge-case, non-reproducable issue that seems to exist when using mobile devices with gateways that offer inline (as opposed to redirect) payments
* Tweak: In line with the above, make some more js functions run later
18th May 2020

* Tweak: make some javascript functions run later for more reliability with certain payment methods
* Fix: Firefox might throw an event = undefined error, stopping orders from being submitted
* Fix: “View Details” of some premium wppizza plugins might have shown information of another plugin
18th May 2020

* Tweak: update to the handling of premium plugin updates availability (gateways might not have updated)
15th May 2020

* Fix: In some edge cases (non-redirecting gateways) loading screen might not have been removed on checkout when updating cart quantities
14th May 2020

* Fix: Some more php notices eliminated
* Fix: Added missing ‘supports_refunds’ boolean parameter for gateways when used with certain action hook priorities
* Fix: Moved ‘wppizza_filter_showorder_on_thankyou’ filter to a more useful and better place
* Fix: Make sure “size” meta data gets saved with menu items (posts) if sizes-id == 0
* Tweak: Make sure to not enqueue scripts unnecessarily on checkout if shop is closed (also eliminates some potential false positive “10005” type errors )
* Added: Allow shop to be forced open for a specific user id or ip address for testing things even when shop is naturally closed (WPPizza->Tools)
14th May 2020

* Fix: some more possible php notices eliminated
* Tweak: more robust handling of premium plugin updates availability
* Tweak: make quickedit link filterable
* Tweak: streamlined the js in a couple of places
* Added: added a few more targetable css classes in a select few places
* Added: Add “Post ID” info before quickedit link
* Added: current blog id to localized js variables
* Added: do_action after post meta data has been updated/saved (‘wppizza_after_update_meta_data’)
* Added: hidden field (#wppizza-cart-json) with json data containing current cart values accessible in any js
* Added: some globally available helper functions for convenience (‘wppizza_is_ajax’, ‘wppizza_maybe_switch_blog’, ‘wppizza_maybe_restore_blog’)
11th May 2020

* Added: global helper ‘wppizza_format_minor_currency’
* Added: A little bit more info in systools, making display of constant filterable
1st May 2020

* Added: Optional display of “empty cart” button in minicart
* Added: Breakdown of tax rates/values in ‘detailed’ reports export
* Added: Helper function (‘wppizza_reports_data’) to allow retrieval of export csv data outside of admin reports page
* Fix: In some circumstances 2 clicks of submit button were needed to arraive at final confirmation page (if used). (caused by v3.12 update)
* Fix: Potential tax fractions rounding issue (if rounding up) due by php precisions in edge cases
* Fix: Possible php notices eliminated in some action hooks
24th April 2020

* Fix: some more potential php notices eliminated
* Fix: added missing 2nd and 3rd parameter to applied ‘widget_title’ filter
* Added: Allow selection of non-thumbnail image sizes for wppizza menu items featured images (Wppizza->Layout) plus adding ‘wppizza_filter_featured_image_size’ for even more granular control
* Added: Some globally available helper functions (wppizza_get_wordpress_image_sizes)
* Added: (as yet unused) Ajax function to update customer/userdata on checkout page
* Added: Allow 3rd party plugins to interrupt the checkout process via js/ajax right after clicking submit/pay buttons (mainly for timesensitive plugins)
* Tweak: Allow for query on ‘mail_sent’ (to shop) in wppizza_get_orders
* Tweak: Allow orders to be recovered (from WPPizza->Orderhistory->Failed) even when email to shop failed. Allow also to always complete orders even if email to shop failed (WPPizza->Tools). Prepay orders only.
* Tweak: Some slight performance improvements in a few places
* Tweak: Slight improvements as to how any potential order errors are being displayed in the frontend.
* Tweak: (Admin) Some minor verbiage updates
* Tweak: (Admin) ensure validity of dates in datepicker (where used)
* Tweak: General TidyUp in a few of places, removing unused parameters, long since deprecated filters and so forth
16th April 2020

* Fix: some possible php notices eliminated for upgrades from very, very old wppizza installations
* Added: filter [wppizza_filter_{type}_formfields] to allow easier filtering of order and confirmation page user form fields
07th April 2020

* Fix: several default parameters not being set on new installs (since 3.11.1)
* Fix: some possible php notices on new installs eliminated
* Fix: order page could still show personal info etc eve if cart is empty (though checkout would not be possible in this case regardless)
31st March 2020

* Fix: some install constants – if used – were ignored
* Fix: some more possible php notices eliminated
* Update: jquery validation library/methods/locale updated (v1.19.1)
* Update: replaced to be deprecated current_time() with current_datetime() throughout
* Tweak: ‘.wppizza-load-redirect’ added to css (will not get removed on ajaxStop)
* Tweak: allow error reason in thankyou page title (if error)
* Tweak: split submit nonces and buttons into separate array parameters on order/confirmation page for easier filtering
* Tweak: removed superflous hidden wppizza_no_cache input
* Tweak: added additional parameters to ‘wppizza_filter_pages_order_markup’ and ‘wppizza_filter_pages_confirmorder_markup’ for easier filtering
28th March 2020

* Fix: ‘wppizza_filter_showorder_on_thankyou’ moved further down in the chain to actually be effective
* Fix: force css priority to always be integer avoiding any possible php notices if not defined yet.
* Added : ‘QUOTE’ payment status to enumerated peyment_status column
* Added : Allow gateways to only be accessible for users with ‘gatewayRequiredCaps’ privileges/caps set in gateway
* Tweak : Email Templates – distinctly set all ‘table’ elements to “position:relative” as default
* Action (New): ‘wppizza_after_ajax’ after each wppizza ajax request (incl. parameters to distinguish between request)
* Action (New): ‘wppizza_session_cart_items’ – allow cart session to be modified before passing it on to cart calculations
* Action (Tweak): ‘wppizza_add_order_meta’ – 2nd (order) parameter added
* Filter (New): ‘wppizza_filter_plaintext_template_{section_key}section’ to be able to filter each (plaintext) template sections individually
* Filter (New): ‘wppizza_filter_orderhistory_order_markup’ for easier filtering of order history output for each order
* Filter (New): ‘wppizza_filter_order_history_status_select’ make orderhistory dropdowns filterable
* Filter (New): ‘wppizza_filter_template_markup_html_body’ to make html templates body tag distinctly filterable
* Filter (New): ‘wppizza_filter_orderpage_localization’ to allow easy filtering of localization strings in order/confirmation and thank you pages
* Filter (New): ‘wppizza_filter_payment_status_completed’ allow final paymnt status to be somethinig other than “COMPLETED” (within restrictions of enum values)
* Filter (New): ‘wppizza_filter_orders_query_sort’ make orders query sortorder filterable
* Filter (Tweak): ‘wppizza_filter_template_options’ – 3rd parameter added
* Filter (Tweak): ‘wppizza_filter_template
{section_key}_section’ – 4th (order) parameter added
* Filter (Tweak): ‘wppizza_filter_templates_html_print_css’ – 2nd (order) parameter added
* Filter (Tweak): ‘wppizza_filter_template_markup’ – 4th (template_id ) parameter added (html templates)
* Filter (Tweak): ‘wppizza_filter_template_markup_plaintext’ – 3rd and 4th (template_id, order) parameters added
* Filter (Tweak): ‘wppizza_filter_orders_query’ – for consistency, added ‘args’ as second parameter. Previous 2nd parameter ‘type’ is now the 3rd parameter. In the (unlikely) event you were using the ‘type’ parameter in this filter, please update your filter/function accordingly .
* Tweak : Passing on template id to internal get_template_email_plaintext_sections_markup()
* Tweak : Allow for additional caps to be added on install if using wppizza_phi_install helper function.
16th March 2020

* Fix: Visibility of “create account” text/information under selection potentially inversed
* Fix: Tip/Gratuities potentially not applied in non-english setups
* Fix: of 3.10.10
* Fix: checkout page potentially showing old cart data in some edge cases (introduced in 3.10.2)
* Tweak: localized taxes percentage on checkout page
26th February 2020

* Fix: Reports of several issues in 3.10.10, so this reverts back to 3.10.9
24th February 2020

* Fix: checkout page potentially showing old cart data in some edge cases (introduced in 3.10.2)
* Tweak: htaccess added to wppizza directory to prevent plugin files themselves from being unnecessarily being indexed
23rd February 2020

* Fix: Entered user data (name, address etc) was lost (since v3.10.2) when using confirmation page
* Fix: (php >=7.4) Some more possible php notices eliminated
12th February 2020

* Fix [WPML Compatibility – Admin Screens]: Make sure – where necessary – to switch back to selected admin language of user as opposed to site language
22nd January 2020

* Fix: A user could potentially select a disabled gateway
* Fix: Broken link in WPPizza->Tools -> System Info : Session Tests
* Fix: Missing pagination css class in WPPizza->Customers
* Tweak: Make number of customers per page (WPPizza->Customers) filterable
* Tweak: Added ‘order_status’ info to sales data array
* Tweak: Doubly Ensure ‘Rejected’ orders are not included in sales/reports data (just in case)
* Tweak: Eliminate some potential sales/reports data and size/additives php notices for updates from pre wppizza 3.x installs
3rd January 2020

* Fix: Reports Sales data should include all orders that have order items, even if total is zero (due to discounts for example)
* Tweak: Some meore detailed error descriptions in some places
* Tweak: Added .pot files
* Tweak: made default quantity input for item(s) in cart smaller when waiting for spinner input to finish loading
* Tweak: made order dates/times follow format in wordpress settings (in most places)
* Tweak: Allow for help screen if required in “Customers” admin page
* Tweak: Some admin css tweaks for small screen devices
* Tweak: Minor tweaks in admin order history javascripts (some status changes were not immediately reflected on the page)
* Tweak: Added SizesID (i.e “blogid.postid.taxonomy(category)id.[added-sizesid].sizeid”) to item array key in cart and orders for more “uniqueness” if required
20th December 2019

* Fix: CSS Spinner/Loading gif not found if wordpress installed in a subdirectory
* Fix: Some more possible php(7) notices/warnings eliminated
* Tweak: Eliminated some false positive error messages in any ipn notifications
* Tweak: Added ‘total_discounts’ as additional parameter to ordervars values
* Tweak: added htaccess to css and js directories to enable deflate and expiry (if supported by server)
* Tweak: Some inconsequential typos
* Updated: Bundled edd plugin updater class
7th December 2019

* Fix: WPML compatibility – additives displaying sortnumber instead of additives name (update to 3.10.3 fix)
15th October 2019

* Fix: WPML compatibility – additives displaying sortnumber instead of additives name
* Tweak: Adding class to tr element of category (if displayed) in cart/order
* Tweak: Minor css tweaks for additives display
11th October 2019

* Fix: Reports Range dropdown (WPPizza -> Reports) not working when changing selection with mouse
* Fix: (Plugin Compatibility) Ensure orders table does not get written to until reaching order page (if any)
* Tweak: Moved minimum order value for pickup (WPPizza -> Order Settings) into pickup section
* Tweak: Minor admin css tweak (WPPizza->Reports / WPPizza->Menu Items : Additives)
* Tweak: Minor frontend css tweak (making cart delete elements ‘td’ fit the delete button)
* Tweak: setting SCRIPT_DEBUG constant will now load unminified scripts (in line with regular WP behaviour)
* Tweak: If order/discount/menu item settings allow for a 0 value order to be submitted, always force COD gateway if total order value is zero (as cc gateways will not process 0 value orders)
* Tweak: Added more userfriendly reason id/string for checkout error 20002 (Checkout Prohibited)
* Tweak: Apply set delivery charges in “Free delivery” setting if “order value reaches” set to ‘n/a’ (extensions only)
* Added [Dev]: global wppizzaUpdateCart() js function to allow cart update called by 3rd party plugins
* Added [Dev]: some global session data retrieval helper functions,
29th September 2019

* Fix: Error in plugin dev helper functions (v3.10)
* Fix: Making sure orders mta table also gets truncated if truncating main order table in WPPizza->tools
* Fix: Payment Due could been shown as 0 in vertain circumstances when using “Credit Card on Delivery” gateway
* Tweaks: minor tweaks (adding some mor parameters that get returned) in wppizza_completed_businessdays function
19th August 2019

* Fix: Wrong comparison argument for order_date_before query in wppizza_get_orders function
* Fix: “Tips” – if any – were shown as input field on thank you page
* Fix: Possible wrong colspan count when displaying category in cart
* Fix: Wppizza taxonomies were missing in post edit screen if gutenberg editor was enabled
* Fix: Loopback errors in WP health check admin page (WP5.2+)
* Added: Allow for “read more” links/tags in post content (enable in WPPizza->Layout->General)
* Added: wppizza_admin_pagination() helper function
* Added: wppizza_delete_order() helper function
* Update: Improve responsiveness of default style for small screen devices
* Update: Some minor css tweaks
* Update: Chosen js/css library updated
* Tweak: Allow for display of featured image in quickedit
* Tweak: Using chosen js library for selects in admin
* Tweak: Allow to discern between Errors and Notices in admin email Errors and Error logs
* Tweak: Removed some unused files
* Tweak: Added title to title element in email/print html templates (to generate appropriate titles when saving as pdf’s for example)
* Tweak: Eliminated some more possible php notices
* Tweak: Some minor admin text string updates to aid clarification
* Tweak: Added 3rd (order) parameter to ‘wppizza_filter_template_markup’ filter
* Tweak: Added css classes to select/multiselects in admin
* Internal: Added html markup to return of admin_pagination() helper
* Internal: Various updates to plugin dev functions
13th August 2019

3.7 – 3.9.6
* changelogs for versions 3.7 to 3.9.6 moved to /wppizza/changelogs/

3.2 – 3.6.6
* changelogs for versions 3.2 to 3.6.6 moved to /wppizza/changelogs/

3.0 – 3.1.7
* changelogs for versions 3.0 to 3.1.7 moved to /wppizza/changelogs/

1.0 –
* changelogs for versions up to 3.0 can be found in /wppizza/changelogs/