learn.php 2.33 KB
<?php 
add_shortcode( 'breadcrumbs', 'the_bread' );


function the_bread() { 
    if(!is_admin()){
        $ingredients = array(
            'separator' => ' | ',
            'offset' => -3,
            'length' => 3,
        );
        ob_start(); 
        $flour = $_SERVER['REQUEST_URI'];

        if ( str_contains( $flour, '?' ) )
            $flour = substr( $flour, 0, strpos( $flour, '?' ) );

        $flour = ( str_ends_with( $flour, '/' ) ? explode( '/', substr( $flour, 1, -1 ) ) : explode( '/', substr( $flour, 1 ) ) );

        $crumbs = [];

        foreach ( $flour as $crumb ) {

            $slug = esc_html( $crumb );

            $url = esc_url( $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . '/' . substr( implode( '/', $flour ), 0, strpos( implode( '/', $flour ), $crumb ) ) . $crumb. '/' );

            array_push( $crumbs, ( object )
                [
                    'slug' => $slug,
                    'url' => $url,
                ]
            );

        };

        $offset =  ( empty( $ingredients['offset'] ) ? 0 : $ingredients['offset'] );
        $length =  ( empty( $ingredients['length'] ) ? null : $ingredients['length'] );

        $crumbs = array_slice( $crumbs, $offset, $length );

        echo '<ul class="bread">';

        $i = 0;
        if ( is_singular( 'sfwd-lessons' ) ) {
        echo '<li class="crumb" itemprop="itemListElement">
            <a class="item" itemprop="item" href="https://thecommonwell.ca/learning-2/">
                <span itemprop="name">Learning Opportunities</span>
            </a>
            <meta itemprop="position" content="1">
        </li>&gt;';
        }
        foreach ( $crumbs as $crumb ) {
            $i++;

            echo '<li class="crumb" itemprop="itemListElement">
                <a class="item" itemprop="item" href="' . $crumb->url . '">
                    <span itemprop="name">' . ( url_to_postid( $crumb->url ) ? get_the_title( url_to_postid( $crumb->url ) ) : ucfirst( str_replace( '-', ' ', $crumb->slug ) ) ) . '</span>
                </a>
                <meta itemprop="position" content="' . $i . '">
            </li>';

            if ( $i !== sizeof( $crumbs ) && ! empty( $ingredients['separator'] ) )
                echo $ingredients['separator'];

        };

        echo '</ul>';
        $output = ob_get_clean(); 
        return $output;
    }

};