This little but highly bothering issue is stopping my site from going live. The menu is built as follows:
1st level:
-Main menu ( home / news /studio / projects / contact ) where:
Home: static page (frontage.php)
News: Blog page (index.php)
Studio: static page
Projects: Selection of posts
Contact: static page
2nd level:
-Projects submenu (it displays a range of categories only)
3rd level:
-Submenu for one of the categories above (that also displays categories only)
Now, for some reason, when any menu item under "projects" is clicked, wp thinks it belongs to "news" highlighting it instead of "projects".
The menus are correctly setup in the admin panel so the issue does not come from there I believe. There must be something in the index.php or single.php that it is causing a conflict.
I would email the necessary php files for review and facilitate a user login to the site for testing.
index.php :
<?php get_header(); ?>
<div id="content" class="clearfix half-bottom" role="main">
<?php
$i = 0;
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('cat=33&posts_per_page=6&order=DES'.'&paged='.$paged);
?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); $i++; ?>
<article <?php post_class() ?>>
<div class="entry g280">
<div class="news-postmetadata add-bottom">
<time datetime="<?php echo date(DATE_W3C); ?>" pubdate class="updated"><?php the_time('d / m / y') ?></time>
</div>
<div class="add-bottom">
<a href="<?php the_permalink() ?>" rel="bookmark" title="" alt="">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(array(260,163)); ?>
<?php else : ?>
<img src="<?php bloginfo('template_url'); ?>/images/noimage-260-163.png" width="260" height="163" alt=""/>
<?php endif; ?>
</a>
</div>
<h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
<?php echo apply_filters('the_excerpt',get_the_excerpt().'..| <a href="'.get_permalink().'"><i class="icon-plus"></i></a> |'); ?>
</div>
</article>
<?php if ($i % 3 == 0) echo '<div class="clear"></div>'?>
<?php endwhile; ?>
</div>
<!--end content-->
<div class="posts-nav g840">
<div class="posts-nav-icons">
<div class="prev-posts"><?php previous_posts_link('<i class="icon-chevron-left"></i>') ?></div>
<div class="next-posts"><?php next_posts_link('<i class="icon-chevron-right"></i>') ?></div>
</div>
</div>
<div class="clear"></div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Duncan O'Neill answers:
Please send a link to your page. I have a hunch this might be more easily solved with css. Or simply that you need to create a "Projects" post category, and have that menu item contain all posts from that category. Thanks.
binaural comments:
Sent
Duncan O'Neill comments:
Thanks for the link. Have you tried my suggestion above, making a "projects" category for posts, and placing all of the posts shown from the "projects" menu under that category?
binaural comments:
Just tried it. Did not work.
Duncan O'Neill comments:
I saw that. Would you add this to your wp-config.php to find out what is causing the error when the site tries to display a post inth e category 'proyectos'?
define('WP_DEBUG', true);
thanks.
binaural comments:
done
binaural comments:
Actually this error started after trying your first suggestion and reordering the categories back :O
Duncan O'Neill comments:
Yes, because you no longer have the posts in the category 'proyectos'. When they were in that category, it was returning a 404 page. But that 404 page could not be displayed because there was a php error in the 404 template. Try [[LINK href="http://bruto.se/wp/falselink"]][[/LINK]] to see what I mean. The reason it was giving a 404 was because it couldn't find the post in that category. That was just a matter of tweaking your permalinks.
It's difficult to get a solution when things change and then change back without a chance to follow a particular road.
I can better help if you'd send me FTP access details.
best,
Duncan O'Neill comments:
Also, you're now getting this error;
Warning: include(/storage/content/38/101438/bruto.se/public_html/wp/wp-content/themes/2c/proyecto-single.php): failed to open stream: No such file or directory in /storage/content/38/101438/bruto.se/public_html/wp/wp-content/themes/2c/single.php on line 13
Because there is no such file proyecto-single.php in your /themes/2c/ folder.
best
binaural comments:
Yes, I tried renaming that file from "single-proyectos.php" to "proyecto-single.php" to test something quickly and changed it back to its original name. But wp now does not seem to recognize it
Duncan O'Neill comments:
Hi binaural,
this is now fixed. I updated code in functions.php. It's well
commented, so that you can see what's been done. Basically,
I've targeted the two menu items projects and news, and
added or taken away classes according to the page or
category.
best,
binaural comments:
This is great. All working ok now. Thanks Duncan and everyone else for your help on this :)
Michael Caputo answers:
Is "Projects" a category?
binaural comments:
No. It is a page
Michael Caputo comments:
If your blog links under "projects" are BLOG posts, then it will think they're news - that's why the 'news' menu item is getting that class.
binaural comments:
Please see index.php which is my blog page "news"
Michael Caputo comments:
Is it possible you have a page and a category called Projects?
Fixing with CSS would be easy, but not the most elegant solution
binaural comments:
No. At his point, after hitting my head on the desk for the last 2 days, anything that fixes this will be great :D
Navjot Singh answers:
Can you paste your index.php here?
binaural comments:
"Projects" links to the projects page, which is a page template that loads 6 posts. Any of those posts link to a single.php that displays the project
Navjot Singh comments:
Thanks. Also I have edited my reply because I think the issue is not with the page Projects use. Can you please paste your index.php here?
binaural comments:
Pasted above. Messy I know
Navjot Singh comments:
Can you give me a temporary login to test?
Navjot Singh comments:
Sorry but I wanted the Wordpress dashboard login not the FTP one.
Navjot Singh comments:
Sorry for the delay in response last night because I slept. But seems you have deactivated the username. Can you please reactivate it? I still haven't checked.
Daniel Yoen answers:
blog link please :)
binaural comments:
message sent
Daniel Yoen comments:
try this :
function my_page_css_class($css_class, $page) {
if (get_post_type()=='yourpage' || is_page(yourpageid)) {
if ($page->ID == get_option('page_for_posts')) {
foreach ($css_class as $k=>$v) {
if ($v=='current_page_parent') unset($css_class[$k]);
}
}
if ($page->ID==57) {
$css_class[]='current_page_parent';
}
}
return $css_class;
}
add_filter('page_css_class','my_page_css_class',10,2);
hope this help
Daniel Yoen comments:
correction :
function my_page_css_class($css_class, $page) {
if (get_post_type()=='yourpage' || is_page(yourpageid)) {
if ($page->ID == get_option('page_for_posts')) {
foreach ($css_class as $k=>$v) {
if ($v=='current_page_parent') unset($css_class[$k]);
}
}
if ($page->ID==yourpageid) {
$css_class[]='current_page_parent';
}
}
return $css_class;
}
add_filter('page_css_class','my_page_css_class',10,2);
out this code on functions.php
Daniel Yoen comments:
don't forget to replace 'yourpage' and 'yourpageid' with your own :)
binaural comments:
Not working
Daniel Yoen comments:
Projects is Custom Post Type ?
binaural comments:
"Projects" is a main page
Daniel Yoen comments:
try this in functions.php :
add_filter('nav_menu_css_class', 'current_type_nav_class', 10, 2 );
function current_type_nav_class($classes, $item) {
$post_type = get_post_type();
if ($item->attr_title != '' && $item->attr_title == $post_type) {
array_push($classes, 'current-menu-item');
};
return $classes;
}
hope this help :)
binaural comments:
No luck either.
Daniel Yoen comments:
try this :
add_filter('wp_nav_menu_objects', function ($items) {
$hasSub = function ($menu_item_id, &$items) {
foreach ($items as $item) {
if ($item->menu_item_parent && $item->menu_item_parent==$menu_item_id) {
return true;
}
}
return false;
};
foreach ($items as &$item) {
if ($hasSub($item->ID, &$items)) {
$item->classes[] = 'current_page_parent';
}
}
return $items;
});
binaural comments:
Daniel, thanks for your effort but that did not work either.
Romel Apuya answers:
Hi,
Did their suggestions work?
I can help too..
can you provide link to the site and test login to the wp-admin?
cheers,
romel