Wordpress Themes - WP Forum at BFA

Wordpress Themes - WP Forum at BFA (http://forum.bytesforall.com/index.php)
-   Atahualpa 3 Wordpress theme (http://forum.bytesforall.com/forumdisplay.php?f=2)
-   -   [SOLVED] Tiered menus first level duplicated at 'Not found' page (http://forum.bytesforall.com/showthread.php?t=18909)

Sprutt Nov 15, 2012 08:49 AM

[SOLVED] Tiered menus first level duplicated at 'Not found' page
 
Hello,

After some extensive Googling I've managed to put together a multi-tiered menu using the wp_list_pages function. It works great everywhere except on the "Not found" page. On that page the code somehow gets it wrong and outputs the first level elements as a subnav/second row, which results in a duplication of the main menu. See code below.

Does anyone have a clue to why this is? And how do I resolve it?

I thought that maybe a custom 404 template would fix it, but when I put a 404.php in my Atahualpa folder it doesn't get used as I read somewhere it would...

The code that goes in header.php looks like this:

PHP Code:

<ul id="nav">  
    <?php 
        $exclude_pages 
= array('nyheter');
        
$excl_str = array();
        foreach( 
$exclude_pages as $title ) {
        
$page get_page_by_title$title );
        
$excl_str[] = $page->ID; }
        
$excl implode(','$excl_str);
        
        
wp_list_pages('title_li=&depth=1&exclude='.$excl.''); 
    
?>  
</ul>  

<?php 
    $parent_id 
$post->post_parent;
    
$parent get_post($parent_id);
    
    if(
$post->post_parent){
        if(
$parent->post_parent){
            
$child wp_list_pages("depth=1&title_li&child_of=".$parent->post_parent."&echo=0&exclude=".$excl."");
            
$child2 wp_list_pages("depth=1&title_li&child_of=".$parent->ID."&echo=0&exclude=".$excl."");
        } else {
            
$child wp_list_pages("depth=1&title_li&child_of=".$parent_id."&echo=0&exclude=".$excl."");
            
$child2 wp_list_pages("depth=1&title_li&child_of=".$post->ID."&echo=0&exclude=".$excl."");
        }
    } else {
        
$child wp_list_pages("depth=1&title_li&child_of=".$post->ID."&echo=0&exclude=".$excl."");
    }
    
    if(
$child){
        echo 
'<ul id="subnav-level-1" class="subnav">'."".$child."".'</ul>';
    }
    if(
$child2){
        echo 
'<ul id="subnav-level-2" class="subnav">'."".$child2."".'</ul>';
    }
?>

Thanks in advance for any help!

juggledad Nov 15, 2012 10:13 AM

I would have to see the site to understand what you are doing.
Also it would be helpful to know what version you are running....

Sprutt Nov 16, 2012 09:19 AM

Hey Juggledad! Thanks for helping out.

Unfortunately I can't show you the actual site since it is not live yet, but in the image below you can see what I'm doing. Does that clarify my problem?

http://deom.se/temp/menu-examples.png

juggledad Nov 16, 2012 01:53 PM

I would add some 'echo' statements in your code so ou can see what is executing, something like
HTML Code:

ehco 'I am in the first if<br>';
etc, the you might see what is going on.

Sprutt Nov 19, 2012 06:51 AM

Thanks for your help Juggledad!

I did some echoing and found out that all the variables for post id and post parent id were not set when you were at the 'Not found' page. So I just made my else into an else if with an isset check in, like below if anyone is interested.

PHP Code:

else if(isset($parent_id)) 



All times are GMT -6. The time now is 09:09 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.