| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | /** |
|---|
| 4 | * When viewing a single post witnin a category that is assigned to a static |
|---|
| 5 | * page, make sure that the pages get the proper class names. |
|---|
| 6 | */ |
|---|
| 7 | function acme_filter_list_pages_for_category_static_pages($list){ |
|---|
| 8 | //Add classes for when news |
|---|
| 9 | if(is_single() && in_category(ACME_NEWS_CATEGORY_ID)){ |
|---|
| 10 | $list = preg_replace('/(?=page-item-' . ACME_ABOUTUS_PAGE_ID . '\b)/', 'current_page_ancestor ', $list); |
|---|
| 11 | $list = preg_replace('/(?=page-item-' . ACME_NEWS_PAGE_ID . '\b)/', 'current_page_ancestor current_page_parent ', $list); |
|---|
| 12 | } |
|---|
| 13 | return $list; |
|---|
| 14 | } |
|---|
| 15 | add_filter('wp_list_pages', 'acme_filter_list_pages_for_category_static_pages'); |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | /** |
|---|
| 19 | * Make sure posts in a category assigned to a static page appear under it in the |
|---|
| 20 | * URI structure. Requires a permalink structure prefixed by /%category%/... |
|---|
| 21 | */ |
|---|
| 22 | function acme_rewrite_post_links_for_static_page_categories($permalink, $post, $leavename){ |
|---|
| 23 | if(in_category(ACME_NEWS_CATEGORY_ID, $post)){ |
|---|
| 24 | return preg_replace("{.+?/(?=\d\d\d\d)}", get_permalink(ACME_NEWS_PAGE_ID), $permalink); |
|---|
| 25 | } |
|---|
| 26 | return $permalink; |
|---|
| 27 | } |
|---|
| 28 | add_filter('post_link', 'acme_rewrite_post_links_for_static_page_categories', 10, 3); |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | /** |
|---|
| 32 | * Make it so that when linking to a category, they are linked to the category's |
|---|
| 33 | * associated static page instead. |
|---|
| 34 | */ |
|---|
| 35 | function acme_rewrite_static_page_category_links($catlink, $category_id){ |
|---|
| 36 | if($category_id == ACME_NEWS_CATEGORY_ID) |
|---|
| 37 | return get_permalink(ACME_NEWS_PAGE_ID); |
|---|
| 38 | return $catlink; |
|---|
| 39 | } |
|---|
| 40 | add_filter('category_link', 'acme_rewrite_static_page_category_links', 10, 2); |
|---|
| 41 | |
|---|
| 42 | |
|---|
| 43 | /** |
|---|
| 44 | * When attemptint to view category that is assigned to a static page, redirect |
|---|
| 45 | * to the page. |
|---|
| 46 | */ |
|---|
| 47 | function acme_redirect_to_static_category_page(){ |
|---|
| 48 | global $wp_query; |
|---|
| 49 | if(is_category(ACME_NEWS_CATEGORY_ID)){ |
|---|
| 50 | wp_redirect(get_permalink(ACME_NEWS_PAGE_ID)); |
|---|
| 51 | } |
|---|
| 52 | } |
|---|
| 53 | add_action('template_redirect', 'acme_redirect_to_static_category_page', 10, 3); |
|---|
| 54 | |
|---|
| 55 | |
|---|
| 56 | //Not included: rewriting archive pages |
|---|