Sarah
Sarah

Reputation: 23

How to show post from just two categories on Wordpress Home page?

Only two categories need to be showed in the homepage. Can anyone help.

Upvotes: 0

Views: 2721

Answers (5)

Richard Rosario
Richard Rosario

Reputation: 125

Do the following, usually in page.php or single.php or if you want a custom page for a category, you can do, category-samplecat.php..

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
     $args = array(
        'post_type' => 'post',
        'post_status' => 'publish',
        'category_name' => array('samplecat', 'anothercat'),
        'paged' => $paged
    );

    $arr_posts = new WP_Query($args);

Then do the usual if, while statement..

if($arr_posts->have_posts() ) :
        // Start the loop.
            while ( $arr_posts->have_posts() ) : 
                $arr_posts->the_post();?>

<?php endwhile; 
endif;

Upvotes: 0

Kiran Dash
Kiran Dash

Reputation: 4956

In your functions.php file paste the below code:

I am assuming that you want to show categories from two categories which are having ids 5 and 9.

function kiran_home_category( $query ) {
 if ( $query->is_home() && $query->is_main_query() ) {
 $query->set( 'cat', '5,9');
 }
}
add_action( 'pre_get_posts', 'kiran_home_category' );

Explanation:

kiran_home_category is just a custom name for the function. That can be any name. The way it works is you attach a function to the action hook pre_get_posts. So before getting the posts the function kiran_home_category will be called. And then inside the function I am changing the query here to only load categories with ID 5 and 9

Upvotes: 0

yogesh
yogesh

Reputation: 94

   <?php 
        $args = array( 'post_type' => 'post', 'posts_per_page' => -1,'category_name' => array('Latest News','News')  );
        $loop = new WP_Query( $args );
        if($loop->have_posts()):
    ?><ul>

                <?php
                    while ( $loop->have_posts() ) : $loop->the_post();
                ?>
                    <li> <span class="date"><?php echo get_the_date( 'd F Y');?></span>
                    <h3><?php echo get_the_title();?></h3>
                    <?php echo $description = get_the_content(); ?>
                    </li>

                <?php endwhile;?>
            </ul>

    <?php endif;?>  
    <?php wp_reset_postdata(); ?>

Upvotes: 0

Dilip kumar
Dilip kumar

Reputation: 176

In wordpress WP_query, category__in parameter used to select category with posts.

<?php 
      $query = new WP_Query( array( 'category__in' => array( 2, 6 ),'post_status'=>'publish','orderby'=>'menu_order','order'=>'Asc' ) );
     if($query->have_posts()):
        echo '<ul>';
        while ( $query->have_posts() ) : the_post();
            echo '<li>' . get_the_title() . '</li>'; 
         endwhile;
        echo '</ul>';
     endif;
   ?>

For more information about wordpress query click here , you can read more information.

Upvotes: 0

j-printemps
j-printemps

Reputation: 1298

You can use WP_Query to get your posts list, and display it with the loop

Example :

$the_query = new WP_Query( array( 'category_name' => 'staff,news' ) );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    // no posts found
}

Upvotes: 1

Related Questions