there is one custom post type News there are 3 taxonomy terms(like category).

1). press-release

2). in-the-news

3). events

i have list out all this three category. now what i am looking for is to display the archive for each category. for example:

      Events
       2014
       2013
       2012

for ex: if i click on 2014 under events that will return the events posts posted in 2014

i want to get events posts by year. for that you need to make you
i have used following function to list out the posts

   function register_post_type_rewrite_rules($wp_rewrite) {
     $args = array('public' => true, '_builtin' => false); 
     $output="names";
     $operator="and";
     $post_types = get_post_types($args,$output,$operator);
     $url_base = ($url_base == '') ? $url_base : $url_base . "https://wordpress.stackexchange.com/";
     $custom_rules = array();
     $post_types = implode('|', $post_types);
     $custom_rules = array( "$url_base($post_types)/([0-9]+)/([0-9]{1,2})/([0-9]{1,2})/?$" =>
       'index.php?post_type_index=1&post_type=" . $wp_rewrite->preg_index(1) . "&news_category='. $wp_rewrite->preg_index(2) .'&year=" . $wp_rewrite->preg_index(3) . "&monthnum=' . $wp_rewrite->preg_index(4) . '&day=' . $wp_rewrite->preg_index(5),       

      "$url_base($post_types)/([0-9]+)/([0-9]{1,2})/?$"  =>
            'index.php?post_type_index=1&post_type=" . $wp_rewrite->preg_index(1) . "&news_category='. $wp_rewrite->preg_index(2) .'&year=" . $wp_rewrite->preg_index(3) . "&monthnum=' . $wp_rewrite->preg_index(4),         //year month

      "$url_base($post_types)/([0-9]+)/?$" =>
            'index.php?post_type_index=1&post_type=" . $wp_rewrite->preg_index(1) . "&news_category='. $wp_rewrite->preg_index(2) .'&year=" . $wp_rewrite->preg_index(3) //year
                        );
      $wp_rewrite->rules = array_merge($custom_rules, $wp_rewrite->rules); // merge existing rules with custom ones

      return $wp_rewrite;
     }

To display the Archive i have create such url.

     function get_cpt_archives( $cpt, $echo = false )
    {
    global $wpdb; 
    $sql = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type = %s AND post_status = "publish' GROUP BY YEAR($wpdb->posts.post_date)  ORDER BY $wpdb->posts.post_date DESC", $cpt);
  $results = $wpdb->get_results($sql);
 if ( $results )
 {
    $archive = array();
    foreach ($results as $r)
    {
        $year = date('Y', strtotime( $r->post_date ) );
        $month = date('F', strtotime( $r->post_date ) );
        $month_num = date('m', strtotime( $r->post_date ) );
        $taxonmoy = get_term( 'events'  , 'news_category', $output, $filter ) ;
        $link = get_bloginfo('siteurl') . "https://wordpress.stackexchange.com/" . $cpt . "https://wordpress.stackexchange.com/".get_query_var('term')."https://wordpress.stackexchange.com/". $year ;
        $this_archive = array(  'year' => $year, 'link' => $link );
        array_push( $archive, $this_archive );
    }

    if( !$echo )
        return $archive;
        echo '<ul class="nav nav-list doc_first_level">';
    foreach( $archive as $a )
    {
        echo '<li><a href="' . $a['link'] . '">' . $a['year'] . '</a></li>';
    }
    echo '</ul>';
      }
        return false;
    }

what i am looking for is to get custom taxonomy posts by year.

for ex: http://domain.com/news/events/2014

this will return the 2014 posts of events term.

right now it shows 400 not found

any help would be greatly appreciated.

0

Leave a Reply

Your email address will not be published. Required fields are marked *