WordPress.org

Make WordPress Core

Ticket #31649: add-wp-breadcrumbs.patch

File add-wp-breadcrumbs.patch, 3.4 KB (added by cardiganmedia, 6 years ago)

Template tag for standardizing breadcrumb navigation

  • post-template.php

     
    18071807        echo $rows;
    18081808        echo "</ul>";
    18091809}
     1810
     1811/**
     1812 * Outputs breadcrumb navigation with user arguments for post type and other parameters
     1813 */
     1814
     1815function wp_breadcrumbs( $args = '' ) {
     1816        $defaults = array(
     1817                'post_type'             => 'post',
     1818                'home_label'    => __( 'Home' ),
     1819                'item_sep'              => ' &#8250; ',
     1820                'cat_sep'               => ' &#124; ',
     1821                'show_title'    => true,
     1822                'start_wrap'    => '',
     1823                'end_wrap'              => '',
     1824                );
     1825        $args = wp_parse_args ( $args, $defaults );
     1826        if ( 'post' == $args['post_type'] ) {
     1827                $home_url = home_url( '/' );
     1828                $cat_list = get_the_category_list();
     1829                if ( ! empty ( $cat_list) ) {
     1830                        $post_category = get_the_category_list( $args['cat_sep'] ) . $args['item_sep'];
     1831                } else {
     1832                        $post_category = null;
     1833                }
     1834
     1835                if ( $args['show_title'] == true ) {
     1836                        $post_title = '<span itemprop="title">' . get_the_title() . '</span>';
     1837                } else {
     1838                        $post_title = null;
     1839                }
     1840
     1841                echo $args['start_wrap'] . '<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
     1842                <a href=" ' . $home_url . '" itemprop="url">' . $args['home_label'] . '</a> ' . $args['item_sep'] . $post_category  . $post_title . '</div>' . $args['end_wrap'];
     1843        }
     1844        elseif ( 'page' == $args['post_type'] ) {
     1845                global $post;
     1846                $home_url = home_url( '/' );
     1847                if ( $args['show_title'] == true ) {
     1848                        $post_title = '<span itemprop="title">' . get_the_title() . '</span>';
     1849                } else {
     1850                        $post_title = null;
     1851                }
     1852                if ( $post->post_parent == true ) {
     1853                        $parent_title = get_the_title ($post->post_parent);
     1854                        $parent_link = get_the_permalink ($post->post_parent);
     1855                        $parent_output = '<a href="' . $parent_link . '">' . $parent_title . '</a>' . $args['item_sep'];
     1856                } else {
     1857                        $parent_output = null;
     1858                }
     1859
     1860                echo $args['start_wrap'] . '<div class="nav codon-breadcrumbs">
     1861                <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
     1862                <a href=" ' . $home_url . '" itemprop="url">' . $args['home_label'] . '</a>' . $args['item_sep'] . $parent_output . $post_title . '</div>' . $args['end_wrap'];
     1863        } else {
     1864                if ( post_type_exists ( $args['post_type'] ) == true ) {
     1865                        global $post;
     1866                        $home_url = home_url( '/' );
     1867                        if ( $args['show_title'] == true ) {
     1868                                $post_title = '<span itemprop="title">' . get_the_title() . '</span>';
     1869                        } else {
     1870                                $post_title = null;
     1871                        }
     1872                        if ( $post->post_parent == true ) {
     1873                                $parent_title = get_the_title ($post->post_parent);
     1874                                $parent_link = get_the_permalink ($post->post_parent);
     1875                                $parent_output = '<a href="' . $parent_link . '">' . $parent_title . '</a>' . $args['item_sep'];
     1876                                } else {
     1877                                $parent_output = null;
     1878                        }
     1879                        if ( get_post_type_archive_link( $args['post_type'] ) == true ) {
     1880                                $post_type_name = ucwords ( $args['post_type'] );
     1881                                $archive_url = get_post_type_archive_link( $args['post_type'] );
     1882                                $post_type_archive_link = '<a href="' . $archive_url . '">' . $post_type_name . '</a>' . $args['item_sep'];
     1883                        } else {
     1884                                $post_type_archive_link = null;
     1885                        }
     1886
     1887                        echo $args['start_wrap'] . '<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
     1888                        <a href=" ' . $home_url . '" itemprop="url">' . $args['home_label'] . '</a>' . $args['item_sep'] . $parent_output . $post_type_archive_link . $post_title . '</div>' . $args['end_wrap'];
     1889                } else {
     1890                        // no output if post type is invalid
     1891                        return;
     1892                }
     1893        }
     1894
     1895}