Predefined module types in ProcessWire

This page looks at the different predefined types of modules in ProcessWire and what they do. It also provides the recommended naming prefixes for modules so that ProcessWire can recognize your module type without actually loading it.

ProcessWire comes with a base Module interface for implementing any kind of plugin, as well as a few abstract and base objects for predefined module types that can be extended to create a module of that type. Common examples of predefined module types in ProcessWire include:

  • Fieldtype for defining field types.
  • Inputfield for defining types of form input fields.
  • Process for creating admin processes/applications.
  • Textformatter for formatting text.
  • AdminTheme for creating themes in the admin.
  • WireMail for modules that send email and extend the WireMail class.
  • Tfa for implementing a specific kind of two-factor authentication.
  • ImageSizerEngine for modules that extend ImageSizerEngine for resizing images.
  • FileCompiler for modules that extend FileCompilerModule for compilation of files.
  • FileValidator for modules that extend FileValidatorModule for validation of files.

Naming conventions

When creating new modules that fall in this category of predefined types, the module type must be used as a prefix in the class name, as a means of identification. For instance, if you create a new Textformatter module called "Something" you should name it "TextformatterSomething". Likewise, a new Inputfield module called "SuperCheckbox" should be named "InputfieldSuperCheckbox". For the module types mentioned above, ProcessWire will not recognize them as a module of that type unless they contain the correct prefix. For modules that aren't based on these existing types, you don't need to consider naming conventions. However, we recommend the following:

  • Use the prefix Markup for modules that are used primarily for markup generation.
  • Use the prefix Session for modules that focus primarily on sessions.
  • Use the prefix Jquery (case intended) for modules that represent a jQuery plugin.
  • Use the prefix LanguageSupport for modules that provide multi-language features and don't match an existing predefined type.

Outside of these module types and naming conventions, you are welcome to use whatever name you'd like when developing a module.

Twitter updates

  • ProcessWire 3.0.153 (dev) focuses on comments field updates, significant refactoring/improvements to ProcessWire’s core Template class and PagesLoader class (which is used by the pages API variable), and we introduce a useful new pages API method— More
    20 March 2020
  • ProcessWire 3.0.152 core updates— This week we have some major improvements to our core date/time Inputfield, as well as a new ability to specify your own custom classes for Page objects— More
    6 March 2020
  • This week we’ve got a couple of really useful API-side improvements to the core in 3.0.151, including predefined image settings and static language translation improvements— More
    21 February 2020

Latest news

  • ProcessWire Weekly #306
    In the 306th issue of ProcessWire Weekly we'll check out ProcessWire 3.0.153, introduce a new third party module called Image Crop Ratios, highlight some recent module updates, and more. Read on!
    Weekly.pw / 21 March 2020
  • ProcessWire 3.0.153 core updates
    This latest version of the core on the dev branch focuses on comments field updates, significant refactoring/improvements to ProcessWire’s core Template class and PagesLoader class (which is used by the $pages API variable), and we introduce a useful new $pages API method.
    Blog / 20 March 2020
  • Subscribe to weekly ProcessWire news

“We were really happy to build our new portfolio website on ProcessWire! We wanted something that gave us plenty of control on the back-end, without any bloat on the front end - just a nice, easy to access API for all our content that left us free to design and build however we liked.” —Castus, web design agency in Sheffield, UK