Валидная микроразметка schema.org на основе yoast breadcrumps

в разделе микроразметка, WordPress. комментарии: 0

На GitHub нашел следующее решение для размещения на сайте валидной микроразметки хлебных крошек schema.org ld+json на основе yoast breadcrumps:

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
<?php
/**
 * Add schema to yoast seo breadcrumb
 */
add_filter('wpseo_breadcrumb_links', 'jj_add_crumb_schema', 10, 1);
function jj_add_crumb_schema($crumbs) {
    if ( ! is_array( $crumbs ) || $crumbs === array() ) {
        return $crumbs;
    }
    $listItems = [];
    $j = 1;
    foreach ( $crumbs as $i => $crumb ) {
        $item = [];
        if ( isset( $crumb['id'] ) ) {
            $item = [
                '@id' => get_permalink($crumb['id']),
                'name' => strip_tags( get_the_title( $id ) )
            ];
        }
        if ( isset( $crumb['term'] ) ) {
            $term = $crumb['term'];
            $item = [
                '@id' => get_term_link( $term ),
                'name' => $term->name
            ];
        }
        if ( isset( $crumb['ptarchive'] ) ) {
            $postType = get_post_type_object($crumb['ptarchive']);
            $item = [
                '@id' => get_post_type_archive_link($crumb['ptarchive']),
                'name' => $postType->label
            ];
        }
        if(isset($crumb['url'])) {
            if($crumb['text'] !== '') {
                $title = $crumb['text'];
            } else {
                $title = get_bloginfo('name');
            }
            $item = [
                '@id' => $crumb['url'],
                'name' => $title
            ];
        }
        $listItem = [
            '@type' => 'ListItem',
            'position' => $j,
            'item' => $item
        ];
        $listItems[] = $listItem;
        $j++;
    }
    $schema = [
        '@context' => 'http://schema.org',
        '@type' => 'BreadcrumbList',
        'itemListElement' => $listItems
    ];
    $html = '<script type="application/ld+json">' . json_encode($schema) . '</script> ';
    echo $html;
    return $crumbs;
}

Благодарность и респект автору: jonathanjanssens





Комментировать