Astra_Breadcrumb_Trail::add_path_parents( string $path )
Get parent posts by path. Currently, this method only supports getting parents of the ‘page’ post type. The goal of this function is to create a clear path back to home given what would normally be a “ghost” directory. If any page matches the given path, it’ll be added.
Description
Parameters
- $path
-
(string) (Required) The path (slug) to search for posts by.
Return
(void)
Source
File: inc/addons/breadcrumbs/class-astra-breadcrumb-trail.php
function add_path_parents( $path ) { // Trim '/' off $path in case we just got a simple '/' instead of a real path. $path = trim( $path, '/' ); // If there's no path, return. if ( empty( $path ) ) { return; } // Get parent post by the path. $post = get_page_by_path( $path ); if ( ! empty( $post ) ) { $this->add_post_parents( $post->ID ); } elseif ( is_null( $post ) ) { // Separate post names into separate paths by '/'. $path = trim( $path, '/' ); preg_match_all( "/\/.*?\z/", $path, $matches ); // If matches are found for the path. if ( isset( $matches ) ) { // Reverse the array of matches to search for posts in the proper order. $matches = array_reverse( $matches ); // Loop through each of the path matches. foreach ( $matches as $match ) { // If a match is found. if ( isset( $match[0] ) ) { // Get the parent post by the given path. $path = str_replace( $match[0], '', $path ); $post = get_page_by_path( trim( $path, '/' ) ); // If a parent post is found, set the $post_id and break out of the loop. if ( ! empty( $post ) && 0 < $post->ID ) { $this->add_post_parents( $post->ID ); break; } } } } } }
Expand full source code Collapse full source code View on Trac
Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |