-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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