WordPress : display all articles of a month on one page

I would like to change the default behavior of WordPress regarding the number of articles displayed on a same page to be the following :

  • when displaying the home page, the 10 most recent articles should be displayed, 10 being the setting which can be changed through the admin panel (posts_per_page)
  • when displaying the articles of a specific month (given through the URL like this : ?m=200906&order=ASC, I’d like to display on the same page all articles of this month (in other words, I don’t want to have to browse through articles using previous entries or next entries.

EDIT : I forgot something else I’d like to change :

Read More

On the page where all articles of the specified month are displayed, I would like to display the comments for each article.

Is this possible to do ? How ?

Related posts

Leave a Reply

3 comments

  1. in your archive.php, add this on top of your template:

    $allowedOrder = array('ASC', 'DESC');
    if(isset($_GET['m'])){
       $order = isset($_GET['order']) ? (in_array($_GET['order'], $allowedOrder) ? $_GET['order'] : $allowedOrder[0]) : $allowedOrder[0];
       $m = $_GET['m'];
       $y = substr($m, 0, 4);
       $m = substr($m, -2);
       $query = "posts_per_page=-1&year=$y&monthnum=$m&order=$order";
       query_posts($query);
     }
    

    Or, if you just have one big index.php template file, do this:

    $allowedOrder = array('ASC', 'DESC');
    if(is_month()){
       $order = isset($_GET['order']) ? (in_array($_GET['order'], $allowedOrder) ? $_GET['order'] : $allowedOrder[0]) : $allowedOrder[0];
       $m = $_GET['m'];
       $y = substr($m, 0, 4);
       $m = substr($m, -2);
       $query = "posts_per_page=-1&year=$y&monthnum=$m&order=$order";
       query_posts($query);
    }
    

    For more detail, look at codex page: