Jake Vanderwerf
2025-12-21 3aada9949d51024a92a8b5c6cb70d12f9c3cac16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
/**
 * Breadcrumb Helper Functions
 *
 * These are backwards-compatible wrappers around BreadcrumbManager
 * Use BreadcrumbManager directly for new code
 */
 
use JVBase\managers\SEO\BreadcrumbManager;
 
if (!defined('ABSPATH')) {
    exit;
}
 
/**
 * Get breadcrumb array for current page
 *
 * @deprecated Use BreadcrumbManager::getInstance()->getCrumbs() instead
 * @return array
 */
function jvbGetCrumbs(): array
{
    return BreadcrumbManager::getInstance()->getCrumbs();
}
 
/**
 * Build and return breadcrumb navigation HTML
 *
 * @deprecated Use BreadcrumbManager::getInstance()->renderNavigation() instead
 * @return string
 */
function jvbBuildBreadcrumbs(): string
{
    return BreadcrumbManager::getInstance()->renderNavigation();
}
 
/**
 * 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
{
    // 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,
    ]);
 
    if ($post->post_parent !== 0) {
        $parent = get_post($post->post_parent);
        if ($parent) {
            $crumbs = jvbGetBreadcrumbPostHierarchy($parent, $crumbs);
        }
    }
 
    return $crumbs;
}
 
/**
 * 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' => $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 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);
        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] : [];
}