Wire::wire() method

Get an API variable, create an API variable, or inject dependencies.

This method provides the following:

  • Access to API variables:
    $pages = $this->wire('pages');

  • Access to current ProcessWire instance:
    $wire = $this->wire();

  • Creating new API variables:
    $this->wire('widgets', $widgets);

  • Injection of dependencies to Wire derived objects:

Most Wire derived objects also support access to API variables directly via $this->apiVar.

There is also the wire() procedural function, which provides the same access to get API variables. Note however the procedural version does not support creating API variables or injection of dependencies.


// Get the 'pages' API variable
$pages = $this->wire('pages');

// Get the 'pages' API variable using alternate syntax
$pages = $this->wire()->pages;

// Get all API variables (returns a Fuel object)
$all = $this->wire('all');

// Get the current ProcessWire instance (no arguments)
$wire = $this->wire();

// Create a new API variable named 'widgets'
$this->wire('widgets', $widgets);

// Create new API variable and lock it so nothing can overwrite
$this->wire('widgets', $widgets, true);

// Alternate syntax for the two above
$this->wire()->set('widgets', $widgets);
$this->wire()->set('widgets', $widgets, true); // lock

// Inject dependencies into Wire derived object

// Inject dependencies during construct
$newPage = $this->wire(new Page());


// basic usage
$mixed = $wire->wire();

// usage with all arguments
$mixed = $wire->wire($name = '', $value = null, bool $lock = false);


name (optional)string, object

Name of API variable to retrieve, set, or omit to retrieve the master ProcessWire object.

value (optional)null, mixed

Value to set if using this as a setter, otherwise omit.

lock (optional)bool

When using as a setter, specify true if you want to lock the value from future changes (default=false).

Return value



Method can throw exceptions on error:

  • WireException

Wire methods and properties

API reference based on ProcessWire core version 3.0.200

Twitter updates

  • Introduction to an invoice application profile being built in ProcessWire: More
    30 September 2022
  • Stumbling upon a really nice ProcessWire-powered website, plus core updates including API improvements for ProcessWire forms— More
    9 September 2022
  • Useful new dot-and-bracket syntax options added for page.get() method— More
    2 September 2022

Latest news

  • ProcessWire Weekly #438
    In the 348th issue of ProcessWire Weekly we're going to cover the latest weekly update from Ryan, take a closer look at a couple of new third party modules, and more. Read on!
    Weekly.pw / 1 October 2022
  • Multi-language field translation export/import
    In this post we cover the details of a new module that enables export and import capabilities for multi-language fields in ProcessWire.
    Blog / 5 August 2022
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH