کد ساختن مکان نما (Breadcrumbs) سفارشی در وردپرس
کد تخفیف در جریان tabestan97 %15 تا آخر تابستان 97

breadcrumbs یا همان مکان نما، یکی از امکانات جالبی است که می توانیم به سایت یا قالب خود اضافه کنیم. با استفاده از این ویژگی کاربران می توانند مکانی از سایت که در حال حاضر آن را مشاهده می کنند را بدانند. تاکنون افزونه های مکان نمای زیادی در مخزن وردپرس ثبت شده است که هر کدام از آنها توانایی نمایش موقعیت فعلی کاربر در سایت را دارد. در افزونه ها شما توانایی ترجمه متون مکان نما و استایل دهی را به راحتی خواهید داشت اما همواره مارکت دِومی توصیه می کند که تا حد توان با استفاده از توابع، ویژگی های لازم را برای قالب اضافه کنید.

بنابراین در این مستند از مارکت دِومی به شما آموزش خواهیم داد که چگونه یک مکان نما ( breadcrumbs ) برای سایت خود بدون نیاز به افزونه ایجاد کنید.

WordPress Breadcrumbs

ابتدا کد زیر را در فایل functions.php قالبتان قرار دهید. این کد وظیفه تعریف مکان نما را بر عهده دارد.

function devme_breadcrumbs() {
  $delimiter = '»';
  $name = 'خانه';
  $currentBefore = '<span class="current">';
  $currentAfter = '</span>';
  if ( !is_home() && !is_front_page() || is_paged() ) {
    echo '<div id="crumbs">';
    global $post;
    $home = get_bloginfo('url');
    echo '<a href="' . $home . '">' . $name . '</a> ' . $delimiter . ' ';
    if ( is_category() ) {
      global $wp_query;
      $cat_obj = $wp_query->get_queried_object();
      $thisCat = $cat_obj->term_id;
      $thisCat = get_category($thisCat);
      $parentCat = get_category($thisCat->parent);
      if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
      echo $currentBefore . 'دسته بندی &#39;';
      single_cat_title();
      echo '&#39;' . $currentAfter;
    } elseif ( is_day() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
      echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
      echo $currentBefore . get_the_time('d') . $currentAfter;
    } elseif ( is_month() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
      echo $currentBefore . get_the_time('F') . $currentAfter;
    } elseif ( is_year() ) {
      echo $currentBefore . get_the_time('Y') . $currentAfter;
    } elseif ( is_single() && !is_attachment() ) {
      $cat = get_the_category(); $cat = $cat[0];
      echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
      echo $currentBefore;
      the_title();
      echo $currentAfter;
    } elseif ( is_attachment() ) {
      $parent = get_post($post->post_parent);
      $cat = get_the_category($parent->ID); $cat = $cat[0];
      echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
      echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
      echo $currentBefore;
      the_title();
      echo $currentAfter;
    } elseif ( is_page() && !$post->post_parent ) {
      echo $currentBefore;
      the_title();
      echo $currentAfter;
    } elseif ( is_page() && $post->post_parent ) {
      $parent_id  = $post->post_parent;
      $breadcrumbs = array();
      while ($parent_id) {
        $page = get_page($parent_id);
        $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
        $parent_id  = $page->post_parent;
      }
      $breadcrumbs = array_reverse($breadcrumbs);
      foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
      echo $currentBefore;
      the_title();
      echo $currentAfter;
    } elseif ( is_search() ) {
      echo $currentBefore . 'نتایج جستجو برای &#39;' . get_search_query() . '&#39;' . $currentAfter;
    } elseif ( is_tag() ) {
      echo $currentBefore . 'برچسب &#39;';
      single_tag_title();
      echo '&#39;' . $currentAfter;
    } elseif ( is_author() ) {
       global $author;
      $userdata = get_userdata($author);
      echo $currentBefore . 'نویسنده ' . $userdata->display_name . $currentAfter;
    } elseif ( is_404() ) {
      echo $currentBefore . 'خطای 404' . $currentAfter;
    }
    if ( get_query_var('paged') ) {
      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
      echo __('Page') . ' ' . get_query_var('paged');
      if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
    }
    echo '</div>';
  }
}

 

اکنون کد زیر را در فایلی از قالب که قصد دارید مکان نما در آنجا نمایش داده شود، قرار دهید. برای مثال فایل single.php و page.php و search.php و …

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

در اولین کد می توانید در صورت نیاز با استفاده از تعریف class و id به متون و لینک ها، استایل دهی شخصی نیز انجام دهید.

هنوز دیدگاهی ارسال نشده! نظر شما چیست؟

دیدگاه شما درباره این صفحه چیست؟