From ba1e1ccf869b818f7a7a897264dfea05563a7796 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 07 Jun 2026 20:10:20 +0000
Subject: [PATCH] =Major overhaul of Integrations. Playing around with adding fields to post types through Registrar from an integrations' class file.
---
inc/helpers/breadcrumbs.php | 261 +++++++++++++++++-----------------------------------
1 files changed, 86 insertions(+), 175 deletions(-)
diff --git a/inc/helpers/breadcrumbs.php b/inc/helpers/breadcrumbs.php
index 4a42118..262a4d4 100644
--- a/inc/helpers/breadcrumbs.php
+++ b/inc/helpers/breadcrumbs.php
@@ -1,216 +1,127 @@
<?php
+/**
+ * Breadcrumb Helper Functions
+ *
+ * These are backwards-compatible wrappers around BreadcrumbManager
+ * Use BreadcrumbManager directly for new code
+ */
-use JVBase\managers\CacheManager;
+use JVBase\managers\SEO\BreadcrumbManager;
if (!defined('ABSPATH')) {
exit;
}
/**
- * Outputs the breadcrumb list as an array
+ * Get breadcrumb array for current page
+ *
+ * @deprecated Use BreadcrumbManager::getInstance()->getCrumbs() instead
* @return array
*/
-function jvbGetCrumbs():array
+function jvbGetCrumbs(): array
{
- $cache = CacheManager::for('breadcrumbs', MONTH_IN_SECONDS);
- $key = get_queried_object_id();
- $crumbs = $cache->get($key);
- $crumbs = false;
- if ($crumbs) {
- return $crumbs;
- }
-
- $crumbs = [];
- $crumbs[] = [
- 'name' => 'Home',
- 'icon' => jvbIcon('house'),
- 'url' => get_home_url(),
- ];
-
- $obj = get_queried_object();
-
- //taxonomies extra
- if (is_tax()) {
- switch ($obj->taxonomy) {
- case BASE.'type':
- $type = 'artist';
- break;
- default:
- $type = jvbNoBase($obj->taxonomy);
- break;
- }
- $directory = jvbDirectories($type);
- $crumbs[] = [
- 'name' => $directory['title'],
- 'url' => $directory['url']
- ];
- $crumbs = array_merge($crumbs, jvbGetBreadcrumbTermHierarchy($obj));
-
- }
- if (is_singular()) {
- $directory = jvbDirectories(jvbNoBase($obj->post_type));
- if (!empty($directory)) {
- $crumbs[] = [
- 'name' => $directory['title'],
- 'url' => $directory['url']
- ];
- }
-
- if (jvbIsDirectory()) {
- $pos = jvbGetDirectoryInfo();
- if (!empty($pos)) {
- $name = $pos['title'];
-
-
- if ($name == 'Map') {
- $crumbs[] = array(
- 'name' => 'Tattoo Shops',
- 'url' => jvbDirectories(BASE.'shop')['url']
- );
- }
-
- $crumbs[] = array(
- 'name' => $name,
- 'url' => $pos['url']
- );
- }
- } else {
-//
-// $crumbs[] = array(
-// 'name' => get_the_title(),
-// 'url' => false,
-// );
- $crumbs = array_merge($crumbs, jvbGetBreadcrumbPostHierarchy($obj));
- }
-
- } elseif (is_post_type_archive() && !is_post_type_archive(BASE.'dash')) {
- $name = jvbNoBase($obj->name);
- $crumbs[] = array(
- 'name' => JVB_CONTENT[$name]['breadcrumb']??JVB_CONTENT[$name]['plural'],
- 'url' => false,
- );
- }
- $cache->set($key, $crumbs);
- return $crumbs;
+ return BreadcrumbManager::getInstance()->getCrumbs();
}
-
/**
+ * Build and return breadcrumb navigation HTML
+ *
+ * @deprecated Use BreadcrumbManager::getInstance()->renderNavigation() instead
* @return string
*/
-function jvbBuildBreadcrumbs():string
+function jvbBuildBreadcrumbs(): string
{
- if (is_front_page()) {
- return '';
- }
- $crumbs = jvbGetCrumbs();
-
- $out = '<nav id="breadcrumbs">';
- $out .= '<ol itemscope itemtype="https://schema.org/BreadcrumbList">';
-
- if (!empty($crumbs)) {
- $i = 1;
- foreach ($crumbs as $crumb) {
- $label = '<span itemprop="name">'.strtolower($crumb['name']).'</span>';
- if (array_key_exists('icon', $crumb)) {
- $label = $crumb['icon'].'<span class="screen-reader-text" itemprop="name">'.$crumb['name'].'</span>';
- }
- $aOpen = $aClose = '';
- if ($crumb['url'] !== false) {
- if (array_key_exists('id', $crumb) && $crumb['id'] === get_queried_object_id()){
-
- } else {
- $aOpen = '<a itemprop="item" href="'.$crumb['url'].'" title="'.$crumb['name'].'">';
- $aClose = '</a>';
- }
- }
- $out .= '<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">'.$aOpen.$label.$aClose.'<meta itemprop="position" content="'.$i.'" /></li>';
- $i++;
- }
- }
-
- $out .= '</ol>';
- $out .= '</nav>';
-
- return $out;
+ return BreadcrumbManager::getInstance()->renderNavigation();
}
-
/**
- * Builds a breadcrumb list of post parents, if available
+ * Build post hierarchy for breadcrumbs
+ *
+ * @deprecated Use BreadcrumbManager directly - this is now a private method
* @param WP_Post $post
* @param array $crumbs
- *
* @return array
*/
-function jvbGetBreadcrumbPostHierarchy(WP_Post $post, array $crumbs = []):array
+function jvbGetBreadcrumbPostHierarchy(WP_Post $post, array $crumbs = []): array
{
+ // This functionality is now private in BreadcrumbManager
+ // If you need this, use the full getCrumbs() method instead
+ trigger_error('jvbGetBreadcrumbPostHierarchy is deprecated. Use BreadcrumbManager::getInstance()->getCrumbs()', E_USER_DEPRECATED);
- array_unshift($crumbs, [
- 'name' => $post->post_title,
- 'url' => get_the_permalink($post->ID),
- 'id' => $post->ID,
- ]);
+ array_unshift($crumbs, [
+ 'name' => $post->post_title,
+ 'url' => get_the_permalink($post->ID),
+ 'id' => $post->ID,
+ ]);
- if ($post->post_parent !== 0) {
- $parent = get_post($post->post_parent);
- if ($parent) {
- $crumbs = jvbGetBreadcrumbPostHierarchy($parent, $crumbs);
- }
- }
+ if ($post->post_parent !== 0) {
+ $parent = get_post($post->post_parent);
+ if ($parent) {
+ $crumbs = jvbGetBreadcrumbPostHierarchy($parent, $crumbs);
+ }
+ }
- return $crumbs;
+ return $crumbs;
}
-
/**
- * Builds a breadcrumb list of parent terms, if available
+ * Build term hierarchy for breadcrumbs
+ *
+ * @deprecated Use BreadcrumbManager directly - this is now a private method
* @param WP_Term $term
* @param array $crumbs
+ * @return array
+ */
+function jvbGetBreadcrumbTermHierarchy(WP_Term $term, array $crumbs = []): array
+{
+ // This functionality is now private in BreadcrumbManager
+ trigger_error('jvbGetBreadcrumbTermHierarchy is deprecated. Use BreadcrumbManager::getInstance()->getCrumbs()', E_USER_DEPRECATED);
+
+ $url = get_term_link($term->term_id);
+ array_unshift($crumbs, [
+ 'name' => html_entity_decode($term->name),
+ 'url' => $url,
+ 'id' => $term->term_id,
+ ]);
+
+ if ($term->parent !== 0) {
+ $parent = get_term($term->parent, $term->taxonomy);
+ if ($parent && !is_wp_error($parent)) {
+ $crumbs = jvbGetBreadcrumbTermHierarchy($parent, $crumbs);
+ }
+ }
+
+ return $crumbs;
+}
+
+/**
+ * Get directory info (kept for now as it's not breadcrumb-specific)
*
* @return array
*/
-function jvbGetBreadcrumbTermHierarchy(WP_Term $term, array $crumbs=[]):array
+function jvbGetDirectoryInfo(): array
{
- $url = get_term_link($term->term_id);
- array_unshift($crumbs, [
- 'name' => $term->name,
- 'url' => $url,
- 'id' => $term->term_id,
- ]);
+ if (is_post_type_archive(BASE.'directory')) {
+ return [
+ 'title' => 'Directory of Directories',
+ 'url' => get_post_type_archive_link(BASE.'directory'),
+ 'slug' => 'directory',
+ 'type' => 'directory'
+ ];
+ }
- if ($term->parent !== 0) {
- $parent = get_term($term->parent, $term->taxonomy);
- if ($parent) {
- $crumbs = jvbGetBreadcrumbTermHierarchy($parent, $crumbs);
- }
- }
- return $crumbs;
-}
+ if (is_singular(BASE.'directory')) {
+ $type = get_post_meta(get_the_ID(), BASE.'for_type_slug', true);
+ return JVB()->directories()?->getDirectoryList()[$type] ?? [];
+ }
-function jvbGetDirectoryInfo():array
-{
- if (is_post_type_archive(BASE.'directory')) {
- return [
- 'title' => 'Directory of Directories',
- 'url' => get_post_type_archive_link(BASE.'directory'),
- 'slug' => 'directory',
- 'type' => 'directory'
- ];
- }
- if (is_singular(BASE.'directory')) {
- $type = get_post_meta(get_the_ID(), BASE.'for_type_slug', true);
+ $obj = get_queried_object();
+ $directories = JVB()->directories()?->directories();
+ if (is_tax()) {
+ $tax = jvbNoBase($obj->taxonomy);
+ return array_key_exists($tax, $directories) ? $directories[$tax] : [];
+ }
- return jvbDirectories()[$type]??[];
- }
- $obj = get_queried_object();
-
- $directories = jvbDirectories();
- if (is_tax()) {
- $tax = jvbNoBase($obj->taxonomy);
- return (array_key_exists($tax, $directories)) ? $directories[$tax] : [];
- }
-
- $type = jvbNoBase($obj->post_type);
- return (array_key_exists($type, $directories)) ? $directories[$type] : [];
+ $type = jvbNoBase($obj->post_type);
+ return array_key_exists($type, $directories) ? $directories[$type] : [];
}
--
Gitblit v1.10.0