Introduction to ProcessWire API variables

ProcessWire provides various API variables to every template file. These variables provide full access to all site content. This page provides an introduction on how to use them.

API variables can be accessed in a few different ways. The most common way is as a variable. Here are a few different ways you might access the same $page API variable (as an example):

  • $page the most common access as a variable.

  • page() accessing as a function can be very convenient, when available.

  • wire('page') This works anywhere, and with any version of ProcessWire.

  • $this->page This is how you might access it from within a Wire-derived class.

  • $this->wire('page') A slightly more efficient way you can access from within a Wire-derived class.

  • $pages->wire('page') API variables can also access all other API variables, by way of their wire() method. In this example, we are accessing the $page API variable from the $pages API variable. So if you have any one API variable, then you actually have them all.

Accessing API variables as a function rather than a variable can be more convenient when the variable version may be out of scope, or if your IDE highlights API variables as undefined. So whenever we refer to an API variable, make note that access it however you'd like.

This is just an introduction to some of ProcessWire's API variables. Once you are familiar with these, you'll want to use ProcessWire's full API reference instead.

Some of ProcessWire’s most common API variables

  • $page

    The $page variable is provided to every template, and it contains all the fields specific to the page being viewed. This includes both built-in fields, which are common to all pages, as well as the custom fields.
  • $pages

    While the $page variable holds the current page, the $pages variable is where you can get at all the other pages in your site. It includes functions for getting, finding, saving and deleting pages.
  • $input

    The $input variable is your connection to GET, POST and COOKIE variables, URL segments, page (pagination) numbers, and more.
  • $sanitizer

    The $sanitizer functions are provided to fill the most common data sanitization needs with sites developed in ProcessWire. Always sanitize any data you get from user input.
  • $session

    This API variable provides access to read/write of session variables, login and logout of users, redirects, and more.
  • $fields

    $fields is an API variable that contains all the custom page fields in your site. It provides the API functions available in the admin control panel under Setup > Fields. Use it to retrieve, save or delete custom page fields.
  • $user

    The $user API variable is your connection to the current user viewing the page.
  • $log

    The $log API variable enables you to create, manage and filter log entries. Log files are stored in /site/assets/logs/.
  • $templates

    The $templates API variable provides access to all of your site’s templates. Use the $templates API variable to retrieve, modify, create or delete templates and control what fields are attached to them.
  • $config

    The $config API variable contains all the settings specific to your site configuration. This includes URLs and paths, database configuration, session configuration, and more.

Twitter updates

  • We added WebP image support this year and many have been adopting it in existing projects. We look at a process used for migrating existing websites to WebP images— from preliminary considerations to implementation & testing, w/lots of tips & tricks too: More
    16 August 2019
  • Core version 3.0.137 on the dev branch adds the ability to hook multiple methods at once, in a single call. This post details how it works and provides a useful example of how you might put it to use in your development environment— More
    2 August 2019
  • ProcessWire 3.0.136 updates our CKEditor version and adds a new backtrace() method to the core Debug class— More
    26 July 2019

Latest news

  • ProcessWire Weekly #275
    In the 275th issue of ProcessWire Weekly we're going to walk you through the new features included in ProcessWire 3.0.138, cover some WebP related stuff, and highlight recent forum posts and online resources. Read on!
    Weekly.pw / 17 August 2019
  • WebP images on an existing site
    In this post we’ll look at a process used for migrating an existing website to use WebP images. We’ll cover everything from preliminary considerations to implementation and testing, with lots of tips and tricks along the way.
    Blog / 16 August 2019
  • Subscribe to weekly ProcessWire news

“ProcessWire is like a breath of fresh air. So powerful yet simple to build with and customise, and web editors love it too.” —Margaret Chatwin, Web developer