Adding categories and tags to pages

In this article I am showing how to add the category and tags to pages.

First registering the category and tags taxonomy to “page” type by init and register_taxonomy_for_object_type functions. After adding this code “Categories” and “Tags” meta box will appear on Page Add/Edit Screen at Dashboard.

/** Enabling Categories and Tags Taxonomy for pages at Add/Edit Screen
 * 
 * @since 1.0
 * 
 */ 
add_action('init', 'gd_register_category_tags_taxonomy_for_page');
function gd_register_category_tags_taxonomy_for_page() {
	register_taxonomy_for_object_type('post_tag', 'page');
	register_taxonomy_for_object_type('category', 'page'); 
}

Adding opening and closing footer markup. genesis_page_entry_footer_markup_open is creating the opening footer markup <footer class="entry-footer"> and genesis_page_entry_footer_markup_close is making the closing footer markup </footer>

add_action( 'genesis_entry_footer', 'genesis_page_entry_footer_markup_open', 5 );
add_action( 'genesis_entry_footer', 'genesis_page_entry_footer_markup_close', 15 );
/**
* Echo the opening structural markup for the entry footer.
*
* @since 2.0.0
*
* @uses genesis_attr() Contextual attributes.
*/
function genesis_page_entry_footer_markup_open() {

if ( 'page' === get_post_type() )
printf( '<footer %s>', genesis_attr( 'entry-footer' ) );

}

/**
* Echo the closing structural markup for the entry footer.
*
* @since 2.0.0
*/
function genesis_page_entry_footer_markup_close() {

if ( 'page' === get_post_type() )
echo '</footer>';

}

Now display the page meta. genesis_post_meta function is executing for “post” type. I created a new function “genesis_page_meta” which is executing for “page” type.

add_filter( 'genesis_page_meta', 'do_shortcode', 20 );
add_action( 'genesis_entry_footer', 'genesis_page_meta' );
/**
* Echo the page meta after the page content.
*
* The page info makes use of a couple of shortcodes by default, and the whole output is filtered via
* `genesis_post_meta` before echoing.
*
* @since 0.2.3
*
* @uses genesis_markup() Contextual markup.
*
* @return null Return early if on a page
*/
function genesis_page_meta() {

if ( 'post' === get_post_type() )
return;

$output = genesis_markup( array(
'html5' => '<p %s>',
'xhtml' => '<div class="post-meta">',
'context' => 'entry-meta-after-content',
'echo' => false,
) );

$output .= apply_filters( 'genesis_page_meta', '[post_categories] [post_tags]' );
$output .= genesis_html5() ? '</p>' : '</div>';

echo $output;

}

Here is the full snippet. You will add the following code in your functions.php file.

//* All codes will go to functions.php file

/**
* Displaying categories and tags at bottom of the pages
* 
* @author Genesis Developer
* @link http://genesisdeveloper.me
* @since 1.0
* @version 1.0
**/

/** Enabling Categories and Tags options for pages
* 
* @since 1.0
* 
*/ 
add_action('init', 'gd_register_category_tags_taxonomy_for_page');
function gd_register_category_tags_taxonomy_for_page() {
register_taxonomy_for_object_type('post_tag', 'page');
register_taxonomy_for_object_type('category', 'page'); 
}

add_filter( 'genesis_page_meta', 'do_shortcode', 20 );
add_action( 'genesis_entry_footer', 'genesis_page_entry_footer_markup_open', 5 );
add_action( 'genesis_entry_footer', 'genesis_page_entry_footer_markup_close', 15 );
add_action( 'genesis_entry_footer', 'genesis_page_meta' );

/**
* Echo the opening structural markup for the entry footer.
*
* @since 2.0.0
*
* @uses genesis_attr() Contextual attributes.
*/
function genesis_page_entry_footer_markup_open() {

if ( 'page' === get_post_type() )
printf( '<footer %s>', genesis_attr( 'entry-footer' ) );

}

/**
* Echo the closing structural markup for the entry footer.
*
* @since 2.0.0
*/
function genesis_page_entry_footer_markup_close() {

if ( 'page' === get_post_type() )
echo '</footer>';

}

/**
* Echo the page meta after the page content.
*
* The page info makes use of a couple of shortcodes by default, and 
* the whole output is filtered via 'genesis_page_meta' before echoing.
*
* @since 1.0.0
*
* @uses genesis_markup() Contextual markup.
*
* @return null Return early if on a post
*/
function genesis_page_meta() {

if ( 'post' === get_post_type() )
return;

$output = genesis_markup( array(
'html5' => '<p %s>',
'xhtml' => '<div class="post-meta">',
'context' => 'entry-meta-after-content',
'echo' => false,
) );

$output .= apply_filters( 'genesis_page_meta', '[post_categories] [post_tags]' );
$output .= genesis_html5() ? '</p>' : '</div>';

echo $output;

}
This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.