Forums

Pass Variables From Templates into Header (4 posts)

  1. derek@elcreative.com
    Member
    Posted 4 weeks ago #

    Hi. I am trying to insert some keywords into my page titles for SEO reasons (per client request). My page structure is already set and i don't want to mess with the naming structure, as i don't need to edit all the pages. Here's what i've tried to do:

    I'm trying to achieve this structure for my titles:

    (page keyword) | Blog Title | (general keyword)

    I've set custom fields in my pages and posts called page-keyword and general-keyword, and echoed them inside the title tag if they exist. However, for the category archives, i can't add custom fields (right?) so i'm setting variables in my category templates before the call for the header, and trying to echo them in the title tag. The custom fields are working fine, and they output both of my keywords in the title. However, the keywords i'm trying to set with variables are not working. Here's some of my code:

    in my header.php:

    <title>
    		<?php if(get_post_meta($post->ID, "page-keyword", true)) { ?>
            <?php echo get_post_meta($post->ID, "page-keyword", true); ?>
            <? } else { ?>
                    	<? echo $pageKeyword ; ?>
        	<? } ?>
     | <?php bloginfo('name'); ?>
     		<?php if(get_post_meta($post->ID, "general-keyword", true)) { ?>
     | <?php echo get_post_meta($post->ID, "general-keyword", true); ?>
     		<? } else { ?>
     | <?php echo $generalKeyword; } ?>
     </title>

    and in my category templates, something like this at the beginning....

    <? $pageKeyword = "My Page Keyword"; ?>
    <? $generalKeyword = "My General Keyword"; ?>
    <?php get_header(); ?>

    Can anyone tell me why those variables aren't being passed or echoed...is my syntax wrong?

  2. songdogtech
    Member
    Posted 4 weeks ago #

    Why not use something like WordPress › All in One SEO Pack « WordPress Plugins. It has something like 3.6 million downloads at last count. It might not help with the exact title structure you want to use, but it seems to be bombproof when it comes to working with metatags.

    For what it's worth, this is what I used to use for custom fields as meta:

    <meta name="description" content="<?php if (is_page(array('130','162','243','402','464','557','558','559','560','561'))) { echo get_post_meta($post->ID, 'description', true);
    } elseif (is_page('542')) { echo bloginfo('description');
    } elseif (is_category()) { echo trim(strip_tags(category_description()));
    } else { echo bloginfo('description'); } ?>" />
  3. derek@elcreative.com
    Member
    Posted 4 weeks ago #

    Hi. I appreciate the reply. I actually was already using the all in one plugin, but it didn't allow me to have two different, arbitrary titles for each page. Before, i just pasted a simplified version of the code. I'm actually doing something similar to your code, using the category description as part of the category titles. And everything works except that i'm not able to pass two keyword phrases for each category, just the category description. If there's any other thing i can set and use for each category, i'll do it. Or, as a last resort, i guess i could use a long "if" statement in the header like:

    <? if (is_category('3')) { echo "Category 3"; ?>
    <? } elseif (is_category('5')) { echo "Category 5"; ?>
    <? } // and so on.... ?>

    That just seemed like a weird way to do it. And it just bugs me that i can't get the variable thing to work.

    Here's my full title code:

    <title>
    		<?php if(get_post_meta($post->ID, "page-keyword", true)) { ?>
            <?php echo get_post_meta($post->ID, "page-keyword", true); ?>
            <? } else { ?>
    
    				<? if(in_category('18') || in_category('3')) { // Stuff to do if this is a long-titled page ?>
    					<?php
                        $tit = the_title('','',FALSE);
                        echo substr($tit, 0, 45);
                        if (strlen($tit) > 45) echo "...";
                        ?>
    				<? } elseif (is_category()) { ?>
                    	<? //echo $pageKeyword ; ?>
                        <?php echo single_cat_title(); ?>
    
    				<? } else { wp_title(''); } ?>
    
        	<? } ?>
     | <?php bloginfo('name'); ?>
     <?php if(get_post_meta($post->ID, "general-keyword", true)) { ?>
     | <?php echo get_post_meta($post->ID, "general-keyword", true); ?>
     <? } elseif (is_category()) { ?>
     | <?php echo strip_tags(category_description()); } ?>
     </title>
  4. songdogtech
    Member
    Posted 4 weeks ago #

    I'll have to take a look at this later and parse it out. Interesting thing to try. But for now, sure All in one SEO isn't conflicting with your custom code?

Reply

You must log in to post.

About this Topic