• Hello, i’m using a template for my site that has a navigation bar in the header. There is an “Home” button and some other buttons that are automatically created every time i publish a new page on my blog.
    Here is the code of header.php file:

    <div id="navbar">
    	<ul class="menu">
    		<li class="<?php if ( is_home() ) { ?>current_page_item<?php } else { ?>page_item<?php } ?>"><a href="<?php echo get_settings('home'); ?>"><?php _e('Home'); ?></a></li>
    		<?php wp_list_pages('sort_column=id&depth=1&title_li='); ?>
    
    	</ul>

    I want to add 2 buttons after the “Home” button and before the other ones created by wp_list_pages function.
    The first button must select and show all blog posts except ones of first category (ID 1).
    The second button must show only posts of category 1.

    I have no idea of how do it.
    Please help me.

    Thank you.

Viewing 7 replies - 1 through 7 (of 7 total)
  • Thread Starter smartmouse

    (@smartmouse)

    Please anyone can help me?

    Thread Starter smartmouse

    (@smartmouse)

    Can you atleast explain to me what this part of code do?

    <li class="<?php if ( is_home() ) { ?>current_page_item<?php } else { ?>page_item<?php } ?>"><a href="<?php echo get_settings('home'); ?>"><?php _e('Home'); ?></a></li>

    I had this problem and with the release of 3.0, they added a much easier solution for creating navigation menus.

    http://codex.ww.wp.xz.cn/Navigation_Menus

    I added this to my functions.php code:

    <?php add_action( 'init', 'register_my_menus' );
    
    function register_my_menus() {
    	register_nav_menus(
    		array(
    			'primary-menu' => __( 'Primary Menu' ),
    			'secondary-menu' => __( 'Secondary Menu' ),
    			'tertiary-menu' => __( 'Tertiary Menu' )
    		)
    	);
    }

    and the navigation menus is listed under Appearance in the admin menu.

    – Gregory S.

    Thread Starter smartmouse

    (@smartmouse)

    Great! Thank you so much!

    I have created a navigation menu with:

    – Home
    – News
    – Info

    I have created the “home” button adding a custom link to http://www.mysite.com. Do you know a better way to create it?
    Then i have created the second button adding the “news” category.
    Finally the “info” button has been created adding the “info” page.

    Now how to create a button to show all posts of all categories except “news” category?

    Thanks 😉

    Thread Starter smartmouse

    (@smartmouse)

    Please dfwgreg keep helping me 🙁

    I have created the “home” button adding a custom link to http://www.mysite.com. Do you know a better way to create it?

    That’s how I did it.

    Now how to create a button to show all posts of all categories except “news” category?

    I’m not sure you can do that. I guess the work-around would be to create a page and make a custom loop query to exclude the ‘news’ category and a make a link to that category.

    http://codex.ww.wp.xz.cn/Pages

    Thread Starter smartmouse

    (@smartmouse)

    Cool! It worked!

    Starting from your link i have created pageofposts.php file with this code:

    <?php
    /*
    Template Name: PageOfPosts
    */
    
    get_header(); ?>
    
    <div id="content" class="narrowcolumn">
    
    <?php
    if (is_page() ) {
    $category = get_post_meta($posts[0]->ID, 'category', true);
    }
    if ($category) {
      $cat = get_cat_ID($category);
      $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
      $post_per_page = 4; // -1 shows all posts
      $do_not_show_stickies = 1; // 0 to show stickies
      $args=array(
        'category__in' => array($cat),
        'orderby' => 'date',
        'order' => 'DESC',
        'paged' => $paged,
        'posts_per_page' => $post_per_page,
        'caller_get_posts' => $do_not_show_stickies
      );
      $temp = $wp_query;  // assign orginal query to temp variable for later use
      $wp_query = null;
      $wp_query = new WP_Query($args);
      if( have_posts() ) :
    		while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
    	    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
            <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
            <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
            <div class="entry">
              <?php the_content('Read the rest of this entry »'); ?>
            </div>
            <p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
          </div>
        <?php endwhile; ?>
        <div class="navigation">
          <div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
          <div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>
        </div>
      <?php else : ?>
    
    		<h2 class="center">Not Found</h2>
    		<p class="center">Sorry, but you are looking for something that isn't here.</p>
    		<?php get_search_form(); ?>
    
    	<?php endif; 
    
    	$wp_query = $temp;  //reset back to original query
    
    }  // if ($category)
    ?>
    
    	</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    I have replaced this row
    'category__in' => array($cat),
    with
    'category__not_in' => array($cat),

    Then i have enabled “screen options” during creating a new page, i have set “PageOfPosts” as template and i have added a custom field “category” with “News” as value (that is the cat i wanted to exclude!).

    Finally i have created the fourth button in the navigation menu (admin -> appearance -> menu) linking it to the new page 🙂

    Thank you so much for your help!
    PS: Did you mean this solution?

Viewing 7 replies - 1 through 7 (of 7 total)

The topic ‘Create header buttons that show certain posts’ is closed to new replies.