WordPress.org

Ready to get started?Download WordPress

Forums

Add a specific post category to a specific page (3 posts)

  1. Kolsyra
    Member
    Posted 1 month ago #

    Hi,

    I am pretty new to code php but after a few hours of google searching I
    found that I could use this code to have a page pick up posts for a specific category:

    if( is_page( 'kolsyra' ) {
       query_posts( array( 'category_name' => 'kolsyra' ) );
    }

    just before the loop in the page.php file but I don't get it to work.
    any help on this would be much appriciated.

    I have tried to put the code within its own <?php and ?> tags just above the loop and inside those tags for the loop itself just before the loop starts.

    /Kolsyra

  2. Kolsyra
    Member
    Posted 1 month ago #

    I'll bump this up with a bit more info if that helps me get an solution.

    I use the twenty fourteen theme and the page.php file looks like this:

    <?php
    /**
     * The template for displaying all pages
     *
     * This is the template that displays all pages by default.
     * Please note that this is the WordPress construct of pages and that
     * other 'pages' on your WordPress site will use a different template.
     *
     * @package WordPress
     * @subpackage Twenty_Fourteen
     * @since Twenty Fourteen 1.0
     */
    
    get_header(); ?>
    
    <div id="main-content" class="main-content">
    
    <?php
    	if ( is_front_page() && twentyfourteen_has_featured_posts() ) {
    		// Include the featured content template.
    		get_template_part( 'featured-content' );
    	}
    ?>
    	<div id="primary" class="content-area">
    		<div id="content" class="site-content" role="main">
    
    			  <?php
    
    				// Start the Loop.
    				while ( have_posts() ) : the_post();
    
    					// Include the page content template.
    					get_template_part( 'content', 'page' );
    
    					// If comments are open or we have at least one comment, load up the comment template.
    					if ( comments_open() || get_comments_number() ) {
    						comments_template();
    					}
    				endwhile;
    			?>
    
    		</div><!-- #content -->
    	</div><!-- #primary -->
    	<?php get_sidebar( 'content' ); ?>
    </div><!-- #main-content -->
    
    <?php
    get_sidebar();
    get_footer();

    I now noticed that it says this

    "This is the template that displays all pages by default.
    Please note that this is the WordPress construct of pages and that
    other 'pages' on your WordPress site will use a different template."

    in the comments in the beginning of page.php code, does this mean that I should add my code in another template?

  3. Steven Jones
    Member
    Posted 1 month ago #

    You can't (and shouldn't) use query_posts for this. When you load a page in WordPress the query that requests information about a page has already been retrieved from the database.

    In this case WordPress has requested the data for the page. What you're looking for is the data for all the posts a category.

    The two options you have is to style the category page which would be located at:
    http://www.yoursite.com/category/kolsyra/

    Another option is to do a secondary query using WP_Query.
    http://codex.wordpress.org/Class_Reference/WP_Query

    I would also read about the Template Hierarchy which might help you understand a little more about how the themes work.
    http://codex.wordpress.org/Template_Hierarchy

Reply

You must log in to post.

About this Topic

Tags