Skip to content

Instantly share code, notes, and snippets.

@dtbaker
Forked from chrisdc/term-meta.php
Last active August 8, 2018 06:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dtbaker/7563c8bdba24b9fdbbb975175f461035 to your computer and use it in GitHub Desktop.
Save dtbaker/7563c8bdba24b9fdbbb975175f461035 to your computer and use it in GitHub Desktop.
Add a custom meta box to the new/edit category pages. The meta data is saved using update_term_meta.
<?php
/**
*Add meta box to the term category page.
*/
function dtbaker_taxonomy_edit_meta_field( $term ) {
// Retrieve the existing value(s) for this meta field.
$term_meta = $term && !empty($term->term_id) ? get_term_meta( $term->term_id, 'custom_page_id', true ) : false;
?>
<tr class="form-field">
<th scope="row" valign="top"><label
for="term_meta[custom_page_id]"><?php _e( 'Choose a page', 'dtbaker' ); ?></label></th>
<td>
<?php
$dropdown_args = array(
'post_type' => 'page',
'selected' => $term_meta,
'name' => 'term_meta[custom_page_id]',
'show_option_none' => __( '(no page)' ),
'sort_column' => 'menu_order, post_title',
'echo' => 1,
);
wp_dropdown_pages( $dropdown_args );
?>
<p class="description"><?php _e( 'Choose a page', 'dtbaker' ); ?></p>
<?php wp_nonce_field( 'update_term_meta', 'term_meta_nonce' ) ?>
</td>
</tr>
<?php
}
add_action( 'category_add_form_fields', 'dtbaker_taxonomy_edit_meta_field', 10 );
add_action( 'category_edit_form_fields', 'dtbaker_taxonomy_edit_meta_field', 10 );
/**
* Save meta data callback function.
*/
function dtbaker_save_taxonomy_custom_meta( $term_id ) {
if (
isset( $_POST['term_meta'] ) && is_array( $_POST['term_meta'] ) &&
! empty( $_POST['term_meta_nonce'] ) && wp_verify_nonce( $_POST['term_meta_nonce'], 'update_term_meta' )
) {
foreach ( $_POST['term_meta'] as $key => $value ) {
update_term_meta( $term_id, $key, sanitize_text_field( $value ) );
}
}
}
add_action( 'edited_category', 'dtbaker_save_taxonomy_custom_meta', 10, 2 );
add_action( 'create_category', 'dtbaker_save_taxonomy_custom_meta', 10, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment