$pages->getByPath() method

Get a page by its path, similar to $pages->get('/path/to/page/') but with more options

  1. There are no exclusions for page status or access. If needed, you should validate access on any page returned from this method.
  2. In a multi-language environment, you must specify the $useLanguages option to be true, if you want a result for a $path that is (or might be) a multi-language path. Otherwise, multi-language paths will make this method return a NullPage (or 0 if getID option is true).
  3. Partial paths may also match, so long as the partial path is completely unique in the site. If you don't want that behavior, double check the path of the returned page.

Available since version 3.0.6.

Example

// Get a page by path 
$p = $pages->getByPath('/skyscrapers/atlanta/191-peachtree/');

// Now validate that the page we retrieved is valid
if($p->id && $p->viewable()) {
  // Page is valid to display
}

// Get a page by path with options
$p = $pages->getByPath('/products/widget/', [
  'useLanguages' => true,
  'useHistory' => true
]);

Usage

// basic usage
$page = $pages->getByPath(string $path);

// usage with all arguments
$page = $pages->getByPath(string $path, $options = []);

Arguments

NameType(s)Description
pathstring

Path of page you want to retrieve.

options (optional)array, bool

array of options (below), or specify boolean for $useLanguages option only.

  • getID (int): Specify true to just return the page ID (default=false).
  • useLanguages (bool): Specify true to allow retrieval by language-specific paths (default=false).
  • useHistory (bool): Allow use of previous paths used by the page, if PagePathHistory module is installed (default=false).
  • allowUrl (bool): Allow getting page by path OR url? Specify false to find only by path. This option only applies if the site happens to run from a subdirectory. (default=true) 3.0.184+
  • allowPartial (bool): Allow partial paths to match? (default=true) 3.0.184+
  • allowUrlSegments (bool): Allow paths with URL segments to match? When true and page match cannot be found, the closest parent page that allows URL segments will be returned. Found URL segments are populated to a _urlSegments array property on the returned page object. This also cancels the allowPartial setting. (default=false) 3.0.184+

Return value

Page int


$pages methods and properties

API reference based on ProcessWire core version 3.0.200

Twitter updates

  • A review of weekly core updates, plus a simple recipe for a very effective listing cache—More
    24 June 2022
  • Weekly update: Making ProcessWire render pages at old WordPress URLs (or building a simple/custom URL router in PW): More
    17 June 2022
  • New post: ProcessWire now comes with just 1 site installation profile, the "blank" profile. It makes very few assumptions, making it a minimal though excellent starting point. Here’s how you might use it— More
    10 June 2022

Latest news

  • ProcessWire Weekly #424
    In the 424th issue of ProcessWire Weekly we'll check out the latest weekly update from Ryan, introduce a new third party module, and more. Read on!
    Weekly.pw / 25 June 2022
  • Starting a site with the “blank” profile
    ProcessWire 3.0.200+ comes with just 1 site installation profile, the site-blank profile. This profile makes very few assumptions, making it a minimal though excellent starting point. Here’s how you might use it. 
    Blog / 10 June 2022
  • Subscribe to weekly ProcessWire news

“To Drupal, or to ProcessWire? The million dollar choice. We decided to make an early switch to PW. And in retrospect, ProcessWire was probably the best decision we made. Thanks are due to ProcessWire and the amazing system and set of modules that are in place.” —Unni Krishnan, Founder of PigtailPundits