Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a menu that has the following link in it to my homepage:

<ul id="css3menu1" class="topmenu">
<li class="topmenu"><a href="<?php bloginfo('template_url'); ?>/homepage.php" target="_top" title="Home" style="height:20px;line-height:20px;">Home</a></li>

When I click on the menu link it takes to the homepage file (this url:http://elliottequineconnections.com/wp-content/themes/elliottequineconnections/homepage.php) the top of the file displays(where I have an image) but none of the php code inside the file is executed.

Code that is not executed:

<?php if (have_posts() ) : while (have_posts()) : the_post(); ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h2><?php the_title(); ?></h2>
<div class="entry">
<?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>
<?php wp_link_pages(array('before' => '<p><strong>Pages</strong>','after' => '</p>', 'next_cr_number' => 'number'));    ?>
</div>
</div>
<?php endwhile; endif; ?>
<?php edit_post_link('Edit this entry.','<p>','</p>'); ?>   
</div>
</div>
<?php endwhile; endif; ?>
<?php edit_post_link('Edit this entry.','<p>','</p>'); ?>

Am I linking to homepage.php in the wrong way?

share|improve this question
add comment

2 Answers

The problem is not that the PHP doesn't execute. It does execute but you get fatal errors because you are loading your template files directly, which means they are loading without the WordPress framework that supplies necessary functions. View source of those pages and you can see error.

You should not be linking directly to that file at all, or directly to any of your template files-- for example, http://elliottequineconnections.com/wp-content/themes/elliottequineconnections/horses-for-sale.php

That is not how WordPress templating works. You should have created pages from the backend-- wp-admin->Pages-- for your content. When you edit one of those pages, you can see the permalink right under the title. That is what you need to link to. It won't look like the actual path to the file.

You can get the permalink for that pages by using get_permalink( $id ); where $id is the ID of the page, but that is going to be tedious. You can make things easier on yourself by using a custom menu. You would do that by registering a navigation menu in your theme's functions.php and then adding code to display that menu elsewhere in the theme.

Following the Codex, you would put this in function.php:

register_nav_menus( array(
    'pluginbuddy_mobile' => 'PluginBuddy Mobile Navigation Menu',
    'footer_menu' => 'My Custom Footer Menu'
) );

And then in footer.php you would place:

$defaults = array(
    'theme_location'  => 'footer_menu'
); 
wp_nav_menu( $defaults );
// and the same for the pluginbuddy_mobile menu

Untested but that is about it. You will end up with a menu on the back-end under Appearance that will let you construct your menu with a GUI.

share|improve this answer
add comment

Replace

<a href="<?php bloginfo('template_url'); ?>

with

<a href="<?php echo home_url(); ?>

assuming you have set your settings->reading to use [whatever page is using homepage.php as a template] as its static front page.

share|improve this answer
    
Hi I replaced <a href="<?php bloginfo('template_url'); ?> with <a href="<?php echo home_url(); ?> which resolved to elliottequineconnections.com/homepage.php but I get a file not found. I have set settings->reading as its static front page. I have other templates that need to be access from a menu link as well so they wouldn't be the front page. Not sure how to link to them as well and have php execute. –  Margaret Ames Mar 27 '13 at 22:47
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.