WordPress.org

Ready to get started?Download WordPress

Forums

Using template tags within PHP pages (17 posts)

  1. Bonnie
    Member
    Posted 9 years ago #

    I've installed a plugin that allows me to use PHP without my posts and pages. What I would like to do now is to use some template tags (such as <?php bloginfo('url'); ?>) within my pages, so that I don't have to type out full URLs all over the place and can have everything relative to my WordPress base URL.

    This is probably a very simple question but I was unable to find the answer by searching, possibly because I wasn't sure what to search for.

    What I need to know is how I can use template tags within PHP pages. For example, I have a script and I would like to use the <?php bloginfo('url'); ?> tag without first "leaving" PHP. I tried just using bloginfo('url') on its own at that didn't work; neither did $bloginfo('url'), bloginfo('$url') or {bloginfo('url')}.

    Any ideas? Thanks in advance!

  2. Minna
    Member
    Posted 9 years ago #

    You mean you are using PHP inside WP created pages (for which you would need a plugin)? Or outside WP?

    You're talking about a plugin, so if you've installed it to allow PHP on pages and posts, it may have a special syntax for writing PHP like <phpcode>bloginfo('url');</phpcode>.

    If you mean that you have a PHP file separate from WP where you would like to use WP's template tags, you need <?php require('path/to/wp-blog-header.php'); ?> somewhere at the top of the file (before any WP tags). Wp-blog-header.php is found in the WP root folder.

    The syntax for using template tags without "leaving" PHP is that without the beginning <?php and ending ?>, that is the bloginfo('url') version you tried.

  3. Bonnie
    Member
    Posted 9 years ago #

    Hi and thanks for the reply. :)

    It's a plugin that basically allows you to treat pages and posts like regular PHP pages, providing you use the correct <?php ... ?> syntax. It doesn't require any special syntax (such as the suggested <phpcode> tag). It's the RunPHP plugin. I'm using it within WP pages (not external pages).

    Basically, what I need to know is how to write the variable bloginfo('url') without enclosing it in its own <?php ... ?> tags. Not just in my plugin-ified pages, but in templates, too. So, for example, if I wanted to include some PHP in my header template (which I do, also) I would use something like this:

    <?php echo "<img src=\"bloginfo('url')/images/nav_{$nav_id}.png\" width=\"120\" height=\"30\" alt=\"$nav_title\" />"; ?>

    ... where bloginfo('url') is the variable for bringing up the URL to my WP installation, and $nav_id and $nav_title are my own pre-defined variables (which do work). Unfortunately, the script seems to break if I "leave" PHP to display the images, so I'd like to know how to echo the variable without its <?php ... ?> tags. Simply using bloginfo('url') doesn't work; it just prints out "bloginfo('url')" rather than the variable's value.

  4. iand
    Member
    Posted 9 years ago #

    You use the tags as you would in a .php page i.e. <?php bloginfo('url'); ?>. Have you followed the usage instructions on the site?:
    In Options -> Writing, turn off the “WordPress should correct invalidly nested XHTML automatically� option.
    Write a post like normal. Save or Publish the post, then go back and edit it. Check the “eval() content� in the Discussion box and save the post again.

  5. Minna
    Member
    Posted 9 years ago #

    <?php echo "<img src=\"" . bloginfo('url') . "/images/nav_$nav_id.png\" width=\"120\" height=\"30\" alt=\"{$nav_title}\" />"; ?>

    Or if you don't want to escape all those double quotes:

    <?php echo '<img src="' . bloginfo('url') . '/images/nav_' . $nav_id . '.png" width="120" height="30" alt="' . $nav_title . '" />'; ?>

    is what I'd write.

    (I hope I got those right...)

  6. Bonnie
    Member
    Posted 9 years ago #

    Yes, I've read the usage instructions and I can get the plugin working fine. However, I am trying to use a tag *within* PHP, so enclosing it in <?php ... ?> tags won't work. Similarly, just using it on its own (without the PHP tags) doesn't work either.

    This applies to templates as well, not just pages and posts.

  7. Bonnie
    Member
    Posted 9 years ago #

    Thanks for the suggestion, Minna.

    Unfortunately, both of those seem to print out the following:

    http://www.burbling.net/wordpress/<img src="/images/nav_.png" width="120" height="30" alt="" />

    It echoes the value of blog('url') before starting the IMG tag. I'm not really sure why though! I tried moving things around but to no avail. *feels a bit stupid*

  8. iand
    Member
    Posted 9 years ago #

    Could you bin the bloginfo bit and just use
    <?php echo "<img src=/images/nav_{$nav_id}.png\" width=\"120\" height=\"30\" alt=\"$nav_title\" />"; ?> I think that has the same effect but I am not too good on relative linkiness.

  9. Bonnie
    Member
    Posted 9 years ago #

    Hi Ian -

    I don't think so, because I need to use this same header for all my pages and some of them are in different folders. :(

    Hmmmm.

  10. Minna
    Member
    Posted 9 years ago #

    oh yeah, echo smacked the stuff in weird places (or actually, I must've been using it wrong all these years :) ). Try print instead

  11. Bonnie
    Member
    Posted 9 years ago #

    Same problem with 'print'. Hmm. I think I may just have to re-shuffle my site structure a bit and try to get away with using relative links after all. Thanks for the help, though, Minna and Ian. It's much appreciated!

  12. iand
    Member
    Posted 9 years ago #

    A bit of searching suggests that get_settings('siteurl') or get_settings('home') could work. I haven't tried them though.

  13. Minna
    Member
    Posted 9 years ago #

    Ugh, how annoying (and weird)...
    What about splitting it up:
    <?php
    echo "<img src=\"";
    echo bloginfo('url') ;
    echo "/images/nav_$nav_id.png\" width=\"120\" height=\"30\" alt=\"{$nav_title}\" />"; ?>

    :) That works, I tried.

  14. Bonnie
    Member
    Posted 9 years ago #

    Unfortunately, Ian, I can't seem to get any tags to work in that way without putting them inside their own PHP tags. :( It's a shame because that'd be very convenient!

    Minna - You're an absolute star. That works. :) Thank you so much!

    Thank you Ian and Minna for all your help. :) Now I can finally get on with modifying this script!

  15. 3stripe
    Member
    Posted 8 years ago #

    It's really weird that bloginfo('url') is outputted before everything else... kinda annoying in fact.

    But thanks for the tip guys :)

  16. Ajd777
    Member
    Posted 8 years ago #

    The bloginfo function is built to automatically echo its data, so when you call then function it echos and then the rest of what you were trying to echo echos.

  17. davidchait
    Member
    Posted 8 years ago #

    you can try "get_bloginfo($somefield);". It doesn't do the apply_filters and convert_chars that bloginfo() does, but if you're just getting a URL or directory path it wouldn't be doing those anyway. Then you can use that within a longer echo statement.

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags

No tags yet.