Wordpress Menü öğesi

3 Cevap php

Ben bir çocuk öğesi olan bir ana sayfa var. Şimdi benim soru, bunun içinde çocukların öğe doğrudan Ana sayfa bağlantısını olması mümkündür? Örneğin

-Ana Sayfa (Sayfa 2 bağlantılar)

--- Sayfa 2

İşte benim kod:

<div id="MainNav">
<ul>
<?php wp_list_pages('exclude=3&sort_column=menu_order&title_li=&depth=1'); ?>
</ul>
</div>
<div id="leftCol">
<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } else { ?>
<?php } ?>
</div>

3 Cevap

Sizin yaklaşım çalışması gerekir gibi ilk bakışta görünüyor. Gerçekten sorun hakkında daha fazla bilgi vermeden daha fazla söyleyemem.

Bir alternatif olarak, ben korumak blogda benzer bir şey yaptım, ama çıkış biraz üzerinde daha fazla kontrol gerekli. Yani benim kendi işlevi çalışırken sona erdi. İşte ben yaptım nasıl:

// Generate the subnav for a page
// Returns a list of links to child pages
// if there are no children, returns a blank list
function get_subnav($page_id)
{
     $current_page = get_page($page_id);
     if ($current_page->ancestors) {
       $child = get_page($page_id);
       $ancestor_id = $child->ancestors[0];
       $page = get_page($ancestor_id);
     } else {
       $page = get_page($page_id);
     }

     $children = get_children('post_parent=' . 
            $page->ID . '&post_type=page&post_status=publish&order=ASC&orderby=menu_order');

     if ($children) {
       $html = '';
       foreach ($children as $child) {
       $html .= "<li><a href='" . get_page_link($page->ID) . "'>" . get_post_meta($page->ID, 'nav_name', true) . "</a></li>\n";
       }
     } else {
       return false;
}


return $html;

}

Ben bu gibi diyoruz: get_subnav($post->ID)

O çocuk sayfaların tüm ağaca unutmayın. Eğer bir çocuk sayfasından arıyorsan, bu kök düğüm olarak ilk atası kullanarak navigasyon inşa edecek.

Anlamıyorum.

Eğer (hatta hata ayıklama modunda) atılan hiçbir hata ile çalışır sağlanan kodu. O çalışır eğer soran var mı? Eğer öyleyse, evet öyle. Sizin için çalışıyor değilse, bize gözlük ve nerede tema bunu eklerken lütfen söyle.

Ayrıca, yerine $post->post_parent, muhtemelen kullanmalısınız $wp_query->post->post_parent. Birisi döngü içinde özel sorgular kullanarak ve $post onlara çağrıda bulunuyor eğer, daha güvenli.

Ben otomatik olarak ilk çocuk yönlendirir bir sayfa şablonu oluşturarak daha önce yaptık. Belki de bunu kullanabilirsiniz. Tofirstchild.php denilen şablon dizinde bir dosya ekleyin ve bunu bu koymak:

<?php

/*
Template Name: Redirect To First Child
*/

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        $pagekids = get_pages( "post_parent=" . $post->ID . "&sort_column=menu_order" );
        $firstchild = $pagekids[0];
        wp_redirect( get_permalink( $firstchild->ID ) );
    }
}

?>

Sonra Yönetici alanında, "Hakkımızda" sayfası için "İlk Çocuk yönlendir" şablonunu seçin.