برای نمایش موقعیت کاربر یا یوزر در هر قسمت از سایت نیاز به نشانگر صفحه یا breadcrumb است. این کار در وردپرس بدون افزونه امکانپذیر است. برای این منظور از دو روش استفاده می کنیم:

روش اول:

کافیست کد زیر را در فایل functions.php پوسته خود قرار دهید.

function the_breadcrumb() {
        echo 'You are here: ';
        if (!is_front_page()) {
                echo '<a href="';
                echo get_option('home');
                echo '">Home';
                echo "</a> » ";
                if (is_category() || is_single()) {
                        the_category(' ');
                        if (is_single()) {
                                echo " » ";
                                the_title();
                        }
                } elseif (is_page()) {
                        echo the_title();
                }
        }
        else {
                echo 'Home';
        }
}

سپس با استفاده از کد زیر در مکان دلخواه پوسته خود که معمولا در فایل single.php یا در header.php خواهید توانست موقعیت کاربر را در صفحه مورد نظر نمایش دهید.

<?php
          the_breadcrumb();
?>

به قسمت بالای وبسایت digital98 دقت کنید تا نتیجه کار خودر را مشاهده کنید. با استفاده از css می توانید به نشانگر صفحه، استایل دلخواه را بدهید.

روش دوم:

می توانید از کد زیر استفاده نمائید:

برای درج موقعیت کنونی کاربر، ابتدا زیر را که کد تابع نمایش Breadcrumb است را در فایل functions.php قالب سایت خود قرار دهید.

// to include in functions.php
function the_breadcrumb() {
$sep = ' > ';
if (!is_front_page()) {

// Start the breadcrumb with a link to your homepage
echo '<div class="breadcrumbs">';
echo '<a href="';
echo get_option('home');
echo '">';
bloginfo('name');
echo '</a>' . $sep;

// Check if the current page is a category, an archive or a single page. If so show the category or archive name.تابع نمایش
if (is_category() || is_single() ){
the_category('>');
} elseif (is_archive() || is_single()){
if ( is_day() ) {
printf( __( '%s', 'text_domain' ), get_the_date() );
} elseif ( is_month() ) {
printf( __( '%s', 'text_domain' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'text_domain' ) ) );
} elseif ( is_year() ) {
printf( __( '%s', 'text_domain' ), get_the_date( _x( 'Y', 'yearly archives date format', 'text_domain' ) ) );
} else {
_e( 'Blog Archives', 'text_domain' );
}
}

// If the current page is a single post, show its title with the separator
if (is_single()) {
echo $sep;
the_title();
}

// If the current page is a static page, show its title.
if (is_page()) {
echo the_title();
}

// if you have a static page assigned to be you posts list page. It will find the title of the static page and display it. i.e Home >> Blog
if (is_home()){
global $post;
$page_for_posts_id = get_option('page_for_posts');
if ( $page_for_posts_id ) {
$post = get_page($page_for_posts_id);
setup_postdata($post);
the_title();
rewind_posts();
}
}
echo '</div>';
}
}

پس از درج کد بالا در فایل functions.php، از کد زیر در هر قسمت از فایل های قالب سایت که می خواهید Breadcrumb نمایش داده شود استفاده کنید.

<!-- start breadcrumbs -->
<?php the_breadcrumb(); ?>
<!-- end breadcrumbs -->

به عنوان مثال اگر می خواهید Breadcrumb را در صفحه نوشته های سایت خود قرار دهید، باید آن را در فایل single.php و در مکانی که می خواهید (معمولا بعد از کد های هدر سایت) قرار دهید، یا آنکه در انتهای کدهای header قرار دهید.

روش سوم

قطعه کد زیر را داخل فایل function.php قالب خود قرار دهید.

function dimox_breadcrumbs() {
$delimiter = '&amp;raquo;';
$home = 'خانه'; // text for the 'Home' link
$before = '&lt;span&gt;'; // tag before the current crumb
$after = '&lt;/span&gt;'; // tag after the current crumb
if ( !is_home() &amp;&amp; !is_front_page() || is_paged() ) {
echo '
&lt;div id=&quot;crumbs&quot;&gt;';
global $post;
$homeLink = get_bloginfo('url');
echo '&lt;a href=&quot;' . $homeLink . '&quot;&gt;' . $home . '&lt;/a&gt; ' . $delimiter . ' ';
if ( is_category() ) {
global $wp_query;
$cat_obj = $wp_query-&gt;get_queried_object();
$thisCat = $cat_obj-&gt;term_id;
$thisCat = get_category($thisCat);
$parentCat = get_category($thisCat-&gt;parent);
if ($thisCat-&gt;parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
echo $before . 'بایگانی برای دسته‌بندی &quot;' . single_cat_title('', false) . '&quot;' . $after;
} elseif ( is_day() ) {
echo '&lt;a href=&quot;' . get_year_link(get_the_time('Y')) . '&quot;&gt;' . get_the_time('Y') . '&lt;/a&gt; ' . $delimiter . ' ';
echo '&lt;a href=&quot;' . get_month_link(get_the_time('Y'),get_the_time('m')) . '&quot;&gt;' . get_the_time('F') . '&lt;/a&gt; ' . $delimiter . ' ';
echo $before . get_the_time('d') . $after;
} elseif ( is_month() ) {
echo '&lt;a href=&quot;' . get_year_link(get_the_time('Y')) . '&quot;&gt;' . get_the_time('Y') . '&lt;/a&gt; ' . $delimiter . ' ';
echo $before . get_the_time('F') . $after;
} elseif ( is_year() ) {
echo $before . get_the_time('Y') . $after;
} elseif ( is_single() &amp;&amp; !is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type-&gt;rewrite;
echo '&lt;a href=&quot;' . $homeLink . '/' . $slug['slug'] . '/&quot;&gt;' . $post_type-&gt;labels-&gt;singular_name . '&lt;/a&gt; ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
} else {
$cat = get_the_category(); $cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo $before . get_the_title() . $after;
}
} elseif ( !is_single() &amp;&amp; !is_page() &amp;&amp; get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
echo $before . $post_type-&gt;labels-&gt;singular_name . $after;
} elseif ( is_attachment() ) {
$parent = get_post($post-&gt;post_parent);
$cat = get_the_category($parent-&gt;ID); $cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo '&lt;a href=&quot;' . get_permalink($parent) . '&quot;&gt;' . $parent-&gt;post_title . '&lt;/a&gt; ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
} elseif ( is_page() &amp;&amp; !$post-&gt;post_parent ) {
echo $before . get_the_title() . $after;
} elseif ( is_page() &amp;&amp; $post-&gt;post_parent ) {
$parent_id = $post-&gt;post_parent;
$breadcrumbs = array();
while ($parent_id) {
$page = get_page($parent_id);
$breadcrumbs[] = '&lt;a href=&quot;' . get_permalink($page-&gt;ID) . '&quot;&gt;' . get_the_title($page-&gt;ID) . '&lt;/a&gt;';
$parent_id = $page-&gt;post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
} elseif ( is_search() ) {
echo $before . 'نتایج جستجو برای &quot;' . get_search_query() . '&quot;' . $after;
} elseif ( is_tag() ) {
echo $before . 'برچسب‌ نوشته‌ها &quot;' . single_tag_title('', false) . '&quot;' . $after;
} elseif ( is_author() ) {
global $author;
$userdata = get_userdata($author);
echo $before . 'Articles posted by ' . $userdata-&gt;display_name . $after;
} elseif ( is_404() ) {
echo $before . 'خطای ۴۰۴' . $after;
}
if ( get_query_var('paged') ) {
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
echo __('برگه') . ' ' . get_query_var('paged');
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
}
echo '&lt;/div&gt;
';
}
}

پس از اسن کار باید بدانید که می خواهید در کدام بخش این امکان را به نمایش بگذارید. معمولا در فایل های page.php یا single.php یا archive.php می توانید قطعه کد کوچک زیر را جهت نمایش موقعیت کنونی در وردپرس قرار بدهید:

<?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?>

با این کار به راحتی این امکان برای سایت شما فعال شده و موقعیت کاربران حاضر در سایت شما نمایش داده خواهد شد.

روش چهارم (کاملترین کد)

function get_hansel_and_gretel_breadcrumbs()
{
    // Set variables for later use
    $here_text        = __( 'You are currently here!' );
    $home_link        = home_url('/');
    $home_text        = __( 'Home' );
    $link_before      = '<span typeof="v:Breadcrumb">';
    $link_after       = '</span>';
    $link_attr        = ' rel="v:url" property="v:title"';
    $link             = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
    $delimiter        = ' » ';              // Delimiter between crumbs
    $before           = '<span class="current">'; // Tag before the current crumb
    $after            = '</span>';                // Tag after the current crumb
    $page_addon       = '';                       // Adds the page number if the query is paged
    $breadcrumb_trail = '';
    $category_links   = '';

    /** 
     * Set our own $wp_the_query variable. Do not use the global variable version due to 
     * reliability
     */
    $wp_the_query   = $GLOBALS['wp_the_query'];
    $queried_object = $wp_the_query->get_queried_object();

    // Handle single post requests which includes single pages, posts and attatchments
    if ( is_singular() ) 
    {
        /** 
         * Set our own $post variable. Do not use the global variable version due to 
         * reliability. We will set $post_object variable to $GLOBALS['wp_the_query']
         */
        $post_object = sanitize_post( $queried_object );

        // Set variables 
        $title          = apply_filters( 'the_title', $post_object->post_title );
        $parent         = $post_object->post_parent;
        $post_type      = $post_object->post_type;
        $post_id        = $post_object->ID;
        $post_link      = $before . $title . $after;
        $parent_string  = '';
        $post_type_link = '';

        if ( 'post' === $post_type ) 
        {
            // Get the post categories
            $categories = get_the_category( $post_id );
            if ( $categories ) {
                // Lets grab the first category
                $category  = $categories[0];

                $category_links = get_category_parents( $category, true, $delimiter );
                $category_links = str_replace( '<a',   $link_before . '<a' . $link_attr, $category_links );
                $category_links = str_replace( '</a>', '</a>' . $link_after,             $category_links );
            }
        }

        if ( !in_array( $post_type, ['post', 'page', 'attachment'] ) )
        {
            $post_type_object = get_post_type_object( $post_type );
            $archive_link     = esc_url( get_post_type_archive_link( $post_type ) );

            $post_type_link   = sprintf( $link, $archive_link, $post_type_object->labels->singular_name );
        }

        // Get post parents if $parent !== 0
        if ( 0 !== $parent ) 
        {
            $parent_links = [];
            while ( $parent ) {
                $post_parent = get_post( $parent );

                $parent_links[] = sprintf( $link, esc_url( get_permalink( $post_parent->ID ) ), get_the_title( $post_parent->ID ) );

                $parent = $post_parent->post_parent;
            }

            $parent_links = array_reverse( $parent_links );

            $parent_string = implode( $delimiter, $parent_links );
        }

        // Lets build the breadcrumb trail
        if ( $parent_string ) {
            $breadcrumb_trail = $parent_string . $delimiter . $post_link;
        } else {
            $breadcrumb_trail = $post_link;
        }

        if ( $post_type_link )
            $breadcrumb_trail = $post_type_link . $delimiter . $breadcrumb_trail;

        if ( $category_links )
            $breadcrumb_trail = $category_links . $breadcrumb_trail;
    }

    // Handle archives which includes category-, tag-, taxonomy-, date-, custom post type archives and author archives
    if( is_archive() )
    {
        if (    is_category()
             || is_tag()
             || is_tax()
        ) {
            // Set the variables for this section
            $term_object        = get_term( $queried_object );
            $taxonomy           = $term_object->taxonomy;
            $term_id            = $term_object->term_id;
            $term_name          = $term_object->name;
            $term_parent        = $term_object->parent;
            $taxonomy_object    = get_taxonomy( $taxonomy );
            $current_term_link  = $before . $taxonomy_object->labels->singular_name . ': ' . $term_name . $after;
            $parent_term_string = '';

            if ( 0 !== $term_parent )
            {
                // Get all the current term ancestors
                $parent_term_links = [];
                while ( $term_parent ) {
                    $term = get_term( $term_parent, $taxonomy );

                    $parent_term_links[] = sprintf( $link, esc_url( get_term_link( $term ) ), $term->name );

                    $term_parent = $term->parent;
                }

                $parent_term_links  = array_reverse( $parent_term_links );
                $parent_term_string = implode( $delimiter, $parent_term_links );
            }

            if ( $parent_term_string ) {
                $breadcrumb_trail = $parent_term_string . $delimiter . $current_term_link;
            } else {
                $breadcrumb_trail = $current_term_link;
            }

        } elseif ( is_author() ) {

            $breadcrumb_trail = __( 'Author archive for ') .  $before . $queried_object->data->display_name . $after;

        } elseif ( is_date() ) {
            // Set default variables
            $year     = $wp_the_query->query_vars['year'];
            $monthnum = $wp_the_query->query_vars['monthnum'];
            $day      = $wp_the_query->query_vars['day'];

            // Get the month name if $monthnum has a value
            if ( $monthnum ) {
                $date_time  = DateTime::createFromFormat( '!m', $monthnum );
                $month_name = $date_time->format( 'F' );
            }

            if ( is_year() ) {

                $breadcrumb_trail = $before . $year . $after;

            } elseif( is_month() ) {

                $year_link        = sprintf( $link, esc_url( get_year_link( $year ) ), $year );

                $breadcrumb_trail = $year_link . $delimiter . $before . $month_name . $after;

            } elseif( is_day() ) {

                $year_link        = sprintf( $link, esc_url( get_year_link( $year ) ),             $year       );
                $month_link       = sprintf( $link, esc_url( get_month_link( $year, $monthnum ) ), $month_name );

                $breadcrumb_trail = $year_link . $delimiter . $month_link . $delimiter . $before . $day . $after;
            }

        } elseif ( is_post_type_archive() ) {

            $post_type        = $wp_the_query->query_vars['post_type'];
            $post_type_object = get_post_type_object( $post_type );

            $breadcrumb_trail = $before . $post_type_object->labels->singular_name . $after;

        }
    }   

    // Handle the search page
    if ( is_search() ) {
        $breadcrumb_trail = __( 'Search query for: ' ) . $before . get_search_query() . $after;
    }

    // Handle 404's
    if ( is_404() ) {
        $breadcrumb_trail = $before . __( 'Error 404' ) . $after;
    }

    // Handle paged pages
    if ( is_paged() ) {
        $current_page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' );
        $page_addon   = $before . sprintf( __( ' ( Page %s )' ), number_format_i18n( $current_page ) ) . $after;
    }

    $breadcrumb_output_link  = '';
    $breadcrumb_output_link .= '<div class="breadcrumb">';
    if (    is_home()
         || is_front_page()
    ) {
        // Do not show breadcrumbs on page one of home and frontpage
        if ( is_paged() ) {
            $breadcrumb_output_link .= $here_text . $delimiter;
            $breadcrumb_output_link .= '<a href="' . $home_link . '">' . $home_text . '</a>';
            $breadcrumb_output_link .= $page_addon;
        }
    } else {
        $breadcrumb_output_link .= $here_text . $delimiter;
        $breadcrumb_output_link .= '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $home_text . '</a>';
        $breadcrumb_output_link .= $delimiter;
        $breadcrumb_output_link .= $breadcrumb_trail;
        $breadcrumb_output_link .= $page_addon;
    }
    $breadcrumb_output_link .= '</div><!-- .breadcrumbs -->';

    return $breadcrumb_output_link;
}

و برای نمایش آن در مکان مورد نظر از تابع زیر استفاده کنید.

echo get_hansel_and_gretel_breadcrumbs();