1. Halo Guest, pastikan Anda selalu menaati peraturan forum sebelum mengirimkan post atau thread baru.

[Help] Cara Bikin Breadcrumb di Theme TwentyTen

Discussion in 'Wordpress' started by Bayam, Sep 17, 2012.

  1. Bayam

    Bayam Ads.id Fan

    Joined:
    Jan 26, 2012
    Messages:
    169
    Likes Received:
    1
    Bro/Sis, gimana cara bikin Breadcrumb di theme bawaan WP, TwentyTen, ane udah ubek2 Google, emank banyak, tapi kagak satupun yang kasih tau tuh kode taruh di bagian mana dari functions.php & header.php.

    Akhirnya ane nyoba taruh kodenya di functions.php, bagian paling bawah setelah endif;

    Hasilnya blog ane langsung error, untung sempat ane backup functions.php nya, kalo kagak, terpaksa ane musti build blog dari awal lagi :(

    Ane orang bodoh gan, mungkin ada agan2 yang sangat pandai yang bisa mengatasi masalah ane yang orang bodoh ini, yang nggak ngerti apapun soal pemrograman.
     
  2. gembel-intelek

    gembel-intelek Lurker

    Joined:
    Mar 29, 2009
    Messages:
    4,341
    Likes Received:
    907
    Location:
    New Coral
    paste aja di sini gan kode yg didapat dari googling tadi, sapa tau terbantu
     
  3. Bayam

    Bayam Ads.id Fan

    Joined:
    Jan 26, 2012
    Messages:
    169
    Likes Received:
    1
    Ini, code buat functions.php


    <?php // Add Breadcrumb Navigation
    function write_breadcrumb() {
    $pid = $post->ID;
    $trail = '<a href="/">'. __('Home', 'textdomain') .'</a>'; if (is_front_page()) { // do nothing }
    elseif (is_page()) {
    $bcarray = array();
    $pdata = get_post($pid);
    $bcarray[] = ' &raquo; '.$pdata->post_title."n";
    while ($pdata->post_parent) {
    $pdata = get_post($pdata->post_parent);
    $bcarray[] = ' &raquo; <a href="'.get_permalink($pdata->ID).'">'.$pdata->post_title.'</a>';
    }
    $bcarray = array_reverse($bcarray);
    foreach ($bcarray AS $listitem) {
    $trail .= $listitem;
    }
    }
    elseif (is_single()) {
    $pdata = get_the_category($pid);
    $adata = get_post($pid);
    if(!empty($pdata)){
    $data = get_category_parents($pdata[0]->cat_ID, TRUE, ' &raquo; ');
    $trail .= " &raquo; ".substr($data,0,-8);
    }
    $trail.= ' &raquo; '.$adata->post_title."n";
    }
    elseif (is_category()) {
    $pdata = get_the_category($pid);
    $data = get_category_parents($pdata[0]->cat_ID, TRUE, ' &raquo; ');
    if(!empty($pdata)){
    $trail .= " &raquo; ".substr($data,0,-8);
    }
    }
    $trail.="";
    return $trail;
    }

    Ini buat header.php

    <?php if (function_exists('write_breadcrumb')) {
    echo '<div class="breadcrumb">';
    echo write_breadcrumb();
    echo '</div><!-- .breadcrumb -->';
    } ?>
     
  4. gembel-intelek

    gembel-intelek Lurker

    Joined:
    Mar 29, 2009
    Messages:
    4,341
    Likes Received:
    907
    Location:
    New Coral
    kode ini dihapus

    PHP:
    <?php // Add Breadcrumb Navigation
    trus paste abis endif bagian ini
    PHP:
    function write_breadcrumb() {
        
    $pid $post->ID;
        
    $trail '<a href="/">'__('Home''textdomain') .'</a>';
        if (
    is_front_page()) { // do nothing
        
    }
        elseif (
    is_page()) {
            
    $bcarray = array();
            
    $pdata get_post($pid);
            
    $bcarray[] = ' &raquo; '.$pdata->post_title."n";
            while (
    $pdata->post_parent) {
                
    $pdata get_post($pdata->post_parent);
                
    $bcarray[] = ' &raquo; <a href="'.get_permalink($pdata->ID).'">'.$pdata->post_title.'</a>';
            }
            
    $bcarray array_reverse($bcarray);
            foreach (
    $bcarray AS $listitem) {
                
    $trail .= $listitem;
            }
        }
        elseif (
    is_single()) {
            
    $pdata get_the_category($pid);
            
    $adata get_post($pid);
            if(!empty(
    $pdata)){
                
    $data get_category_parents($pdata[0]->cat_IDTRUE' &raquo; ');
                
    $trail .= " &raquo; ".substr($data,0,-8);
            }
            
    $trail.= ' &raquo; '.$adata->post_title."n";
        }
        elseif (
    is_category()) {
            
    $pdata get_the_category($pid);
            
    $data get_category_parents($pdata[0]->cat_IDTRUE' &raquo; ');
            if(!empty(
    $pdata)){
                
    $trail .= " &raquo; ".substr($data,0,-8);
            }
        }
        
    $trail.="";
        return 
    $trail;
    }
    dibagian header abis <div id="main">

    PHP:
    <?php if (function_exists('write_breadcrumb')) {
        echo 
    '<div class="breadcrumb">';
        echo 
    write_breadcrumb();
        echo 
    '</div><!-- .breadcrumb -->';
    }
    ?> 
     
    Bayam and luliana like this.
  5. turtle

    turtle Hero

    Joined:
    Mar 13, 2010
    Messages:
    582
    Likes Received:
    134
    Location:
    Semarang, Indonesia
    menurut saya kodenya kurang sip.
    (cuman masalah selera mungkin)

    mastah gembel-intelek, tolong dikoreksi kalo ada yang salah ya...

    pertama, jangan edit/tambahkan kode di theme twentyten langsung,
    karena twentyten pasti akan diupdate secara reguler, dan anda akan kehilangan
    editan itu kalo ngupdate theme twentyten.
    jadi lebih baik bikin child theme dari twentyten.
    kalo ga tahu caranya, nanti saya jelaskan.

    yang kedua, sebisa mungkin kalo pake kode orang lain ditulis sumbernya,
    selain biar ga lupa, ini juga

    tentang nama fungsi
    nama fungsi yang dipake diatas adalah 'write_breadcrumb', nama ini terlalu generic,
    lebih baik dibuat nama fungsi yang unik. misalnya 'bayam_write_breadcrumb' atau 'bayam_breadcrumb'
    atau menggunakan prefix nama child theme yang dipakai.

    yang pertama kode:
    Code:
        $trail = '<a href="/">'. __('Home', 'textdomain') .'</a>';
    
    kode diatas untuk membuat link ke "Home".

    kode yang lebih baik:
    Code:
        $trail = '<a href="'.home_url().'" title="'.esc_attr( get_bloginfo( 'name' ) ).'">'. __('Home', 'textdomain') .'</a>';
    
    kenapa lebih baik?
    link ke home sebaiknya menggunakan 'home_url()' dan tidak dengan '/' untuk memastikan mengarah ke link yang benar, selain itu untuk seo, lebih baik menggunakan title nama blog anda di anchor text.
    Jelas, nama web anda bukan sekedar "Home". secara context ini lebih logis.

    untuk 'textdomain' ini gunanya untuk translation, ganti ini dengan nama child theme.
    atau kalau tidak pakai translation, dan hanya untuk dipakai sendiri, ga perlu pake textdomain kodenya lebih simple:

    Code:
        $trail = '<a href="'.home_url().'" title="'.esc_attr( get_bloginfo( 'name' ) ).'">Home</a>';
    
    dan kata home bisa diganti sesuai selera, misalnya untuk web bhs indonesia bisa pake 'Beranda', dsb...

    untuk kode lainnya, penjelasan di inline docs

    Code:
    /**
     * Simple Breadcrumbs
     * simple breadcrumbs untuk theme twenty ten
     * atau theme apa saja.
     */
    function bayam_write_breadcrumb() {
    
        //kode ini ga perlu, lebih baik pake global $post
        //biar aman saja di halaman archives
        //$pid = $post->ID;
        
        //globalize post object
        global $post;
        
        //pertama, bikin link ke home page
        $trail = '<a href="'.home_url().'" title="'.esc_attr( get_bloginfo( 'name' ) ).'">Home</a>';
    
        //kalau di front page / blog page, tidak ditampilkan apapun, kecuali link ke home.
        if (is_front_page()) { 
            // do nothing
        }
        
        //kalau di halaman post type (singular)
        elseif (is_singular()){
            
            //kalo di halaman page:
            //lebih baik pake is_singular('page')
            if (is_singular('page')) {
    
            //hanya kalau halaman page tersebut punya parent page
            //kita akan melist semua parent post dari page tersebut
            if( $post->post_parent ){
            
                //ambil parent page object id
                $page_parent_id  = $post->post_parent;
                
                //page parent mungkin lebih dari satu jadi bentuknya array
                $bcarray = array();
                
                //link ke page yang aktif
                $bcarray[] = ' &raquo; '.get_the_title( $pdata->ID )."n";
    
                //link ke post parent(s)
                while ( $page_parent_id ) {
                
                    //dapatkan data dari parent tersebut
                    //karena ini page dan bukan post pakenya get_page bukan get_post
                    $pdata = get_page( $page_parent_id );
    
                    //untuk title saya lebih suka pake get_the_title saja bukan $post->post_title
                    $bcarray[] = ' &raquo; <a href="'.get_permalink($pdata->ID).'">'.get_the_title( $pdata->ID ).'</a>';
                    $page_parent_id  = $page->post_parent;
                }
                
                //balik list nya, biar ga gosong
                //eh, dibalik biar urutannya jadi bener.
                $page_parents = array_reverse( $page_parents );
                
                //untuk tiap item, jadikan link.
                foreach ($bcarray AS $listitem) {
                    $trail .= $listitem;
                }
        
            }
            //kalo ga ada parent nya
            else{
                //link ke page yang aktif saja.
                $trail .= ' &raquo; '.get_the_title( $pdata->ID )."n";
            }
    
            //kalo di single post
            //karena is_single bukan cuman untuk post tapi juga attachment dan post type lain,
            // dan tentunya ga ada taxonomy category
            elseif (is_singular('post')) {
    
                //dapatkan kategori dari post tersebut
                $pdata = get_the_category($pid);
                
                //ambil post id
                $adata = get_post($pid);
                
                //kalo ada kategori di post tersebut
                if(!empty($pdata)){
                    //saya masih ragu sama kode ini...
                    $data = get_category_parents($pdata[0]->cat_ID, TRUE, ' &raquo; ');
                    $trail .= " &raquo; ".substr($data,0,-8);
                }
    
                //tampilkan juga post title diakhir
                $trail.= ' &raquo; '.$adata->post_title."n";
            }
            //di post type lain, misalnya attachment atau cpt
            else{
                //tampilkan post title saja.
                $trail.= ' &raquo; '.$adata->post_title."n";
            }
        }
        //di halaman kategori
        elseif (is_category()) {
            $pdata = get_the_category($pid);
            $data = get_category_parents($pdata[0]->cat_ID, TRUE, ' &raquo; ');
            if(!empty($pdata)){
                $trail .= " &raquo; ".substr($data,0,-8);
            }
        }
        //saya ga tahu kenapa kale kosong diakhir, 
        $trail.="";
        
        //untuk lebih mudah langsung echo saja+html nya
        //return $trail;
        echo '<div class="breadcrumb">'.$trail.'</div><!-- .breadcrumb -->';
    } 
    
    di child theme, copas header.php dari twentyten dan upload ke child theme folder, lalu
    masukkan kode di paling bawah abis <div id="main">
    Code:
    <?php if (function_exists('bayam_write_breadcrumb')) { bayam_write_breadcrumb();}?>
    

    maaf kalo ada error, kode belum di test.
     
    Bayam likes this.
  6. dhmskrn

    dhmskrn Ads.id Starter

    Joined:
    Aug 7, 2012
    Messages:
    78
    Likes Received:
    4
    Location:
    Yogyakarta
    klo saya pake ginian hxxp://www.dhimaskirana.com/cara-membuat-breadcrumb-di-wordpress-tanpa-plugin.html :D
     

Share This Page