Definition:
function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) {}
Retrieve category based on URL containing the category slug.
Breaks the $category_path parameter up to get the category slug.
Parameters
- string $category_path: URL containing category slugs.
- bool $full_match: Optional. Whether full path should be matched.
- string $output: Optional. Constant OBJECT, ARRAY_A, or ARRAY_N
Return values
returns:Null on failure. Type is based on $output value.
Source code
function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) { $category_path = rawurlencode( urldecode( $category_path ) ); $category_path = str_replace( '%2F', '/', $category_path ); $category_path = str_replace( '%20', ' ', $category_path ); $category_paths = '/' . trim( $category_path, '/' ); $leaf_path = sanitize_title( basename( $category_paths ) ); $category_paths = explode( '/', $category_paths ); $full_path = ''; foreach ( (array) $category_paths as $pathdir ) $full_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title( $pathdir ); $categories = get_terms( 'category', array('get' => 'all', 'slug' => $leaf_path) ); if ( empty( $categories ) ) return null; foreach ( $categories as $category ) { $path = '/' . $leaf_path; $curcategory = $category; while ( ( $curcategory->parent != 0 ) && ( $curcategory->parent != $curcategory->term_id ) ) { $curcategory = get_term( $curcategory->parent, 'category' ); if ( is_wp_error( $curcategory ) ) return $curcategory; $path = '/' . $curcategory->slug . $path; } if ( $path == $full_path ) return get_category( $category->term_id, $output ); } // If full matching is not required, return the first cat that matches the leaf. if ( ! $full_match ) return get_category( $categories[0]->term_id, $output ); return null; }
1244
No comments yet... Be the first to leave a reply!