Set a category for a page

Category is a taxonomy that applies to Posts. Pages are not Posts. Pages are Pages.

If you need your content to use the Category taxonomy, you have a couple options:

  1. Use Posts, rather than Pages, for that content.
  2. Register the Category taxonomy for static Pages, e.g. by placing the following in functions.php (or in a Plugin):

Which will enable Categories for static Pages.

Grr… code doesn’t want to show:

<?php 
register_taxonomy_for_object_type( 'category', 'page' ); 
?>

Edit 2

The correct way to modify the main loop query is via pre_get_posts, e.g. like so:

function wpse29834_filter_pre_get_posts( $query ) {
    if ( is_category() && $query->is_main_query() ) {
        $query->set( 'post_type', array( 'post', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'wpse29834_filter_pre_get_posts' );

Using pre_get_posts is preferred over using query_posts(), though the original solution works in this case.

(Original Solution)

To get your categorized Pages to display in the Loop on your category archive indexes, you’ll need to modify the Loop query in category.php, which you do using the query_posts() function. e.g.:

<?php
// Declare the global
global $wp_query;
// Define our custom args
// We're telling the query to use
// both Posts and Pages
$custom_args = array( 'post_type' => array( 'post', 'page' ) );
// Merge the default query with our custom query
$query_args = array_merge( $wp_query->query, $custom_args );
// Finally, query posts based on our custom args
query_posts( $query_args );
?>

Place this code before you output the Loop.