Loại bài đăng lưu trữ hàng năm / hàng tháng permalinks


7

Tôi có một loại "tin tức" tùy chỉnh trong trang Wordpress của mình. Tôi đang sử dụng plugin Advanced Custom Field để thêm dữ liệu meta vào mỗi bài đăng.

Tôi muốn tạo một loạt các mục tin tức như một kho lưu trữ:

[2013]
    [January] => 5
[2012]
    [January] => 20
    [February] => 10
[2011]
    [April] => 30

Tôi quản lý để làm việc này bằng cách sử dụng:

    global $wpdb;
    $news = $wpdb->get_results(
        "SELECT wp_posts.post_date, COUNT(wp_posts.ID) as count
         FROM $wpdb->posts
         WHERE
         wp_posts.post_type = 'news' AND
         wp_posts.post_status = 'publish' AND
         wp_posts.post_date <= CURDATE() AND
         wp_posts.post_date >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR)
         GROUP BY YEAR(wp_posts.post_date), MONTH(wp_posts.post_date)
         ORDER BY wp_posts.post_date DESC", 
         ARRAY_A);

    $archive = array();
    foreach ($news as $post):
        $year = date('Y', strtotime($post['post_date']));      
        $month = date('m', strtotime($post['post_date']));     
        $month_name = date('F', strtotime($post['post_date']));
        $post['url'] = 'NOT SURE ABOUT URL';
        $archive[$year][$month_name] = $post;
    endforeach;

Tôi cần có thể liên kết với các năm và tháng cụ thể bằng cách sử dụng http://example.com/news/2012/http://example.com/news/2012/10/.

Tôi đã thử sử dụng plugin Lưu trữ loại bài đăng tùy chỉnh nhưng khi tôi xem /news/2012/danh sách tin tức tiêu chuẩn không có bộ lọc được áp dụng.

Đây là mã loại bài đăng tùy chỉnh của tôi

register_post_type('news', 
  array(    
    'label' => 'News',
    'description' => 'Latest News',
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => '','with_front' => '1'),
    'query_var' => true,
    'has_archive' => true,
    'menu_position' => 120,
    'menu_icon' => /assets/img/icon-custom.png
  )
);

2
Tôi giả sử bạn đã sử dụng Postsloại bài đăng tích hợp cho mục đích khác? Đây thực sự là những gì bài viết được thiết lập cho - lưu trữ hàng tháng / hàng năm và sẽ "chỉ hoạt động" mà không phải làm gì thêm. Nếu bạn muốn hành vi tương tự cho một loại bài đăng tùy chỉnh, bạn sẽ không may phải tạo quy tắc viết lại của riêng bạn, điều này không đơn giản.
Milo

Có, bài viết hiện đang được sử dụng cho bài viết blog. Phần tin tức là một loại bài tùy chỉnh. Bạn có một ví dụ về các quy tắc viết lại mà tôi sẽ cần sử dụng cho yearmonth?
dclawson

Câu trả lời:


7

Đây là một ví dụ sử dụng add_rewrite_ruleđể xử lý năm và tháng cho một loại bài tùy chỉnh trong đó newslà sên. Truy cập Settings > Permalinkstrang trong quản trị để xóa quy tắc viết lại sau khi điều này được thêm vào. Bạn cũng có thể đặt cái này trong một pluginxóa các quy tắc viết lại khi kích hoạt plugin .

function wpa83797_news_rewrite_rules(){

    add_rewrite_rule(
        'news/([0-9]{4})/([0-9]{1,2})/?$',
        'index.php?post_type=news&year=$matches[1]&monthnum=$matches[2]',
        'top'
    );

    add_rewrite_rule(
        'news/([0-9]{4})/?$',
        'index.php?post_type=news&year=$matches[1]',
        'top'
    );

}
add_action( 'init', 'wpa83797_news_rewrite_rules' );

Cảm ơn @Milo, tôi đã áp dụng quy tắc viết lại cho việc này nhưng khi tôi truy cập, http://mysite.com/news/2012/tôi được chuyển hướng đến http://mysite.com/news/. Không thể tìm ra vấn đề là gì. Tôi có lẽ nên đề cập rằng tôi cũng đang sử dụng Roots WP framework. Tôi đã xem qua nhưng không thể tìm thấy bất cứ điều gì sẽ gây ra điều này.
dclawson

Điều tương tự cũng xảy ra khi tôi goto:http://mysite.com/index.php?post_type=news&year=2012&monthnum=10
dclawson

Mã đăng ký loại bài đăng của bạn trông như thế nào? hãy thử trong hai mươi hai lần để xác định xem nó có liên quan đến chủ đề không.
Milo

Có vẻ như vấn đề là do roots_nice_search_redirectchức năng trong WP Roots. Tôi sẽ sửa đổi chức năng này và đăng kết quả ở đây. Cảm ơn bạn Milo, quy tắc htaccess của bạn đã chính xác.
dclawson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.