У меня есть этот код, который добавляет поле выбора с именем 'comp_email_template_id' к моей пользовательской таксономии с именем 'xyz_comp_entry_category' ...
add_action( 'xyz_comp_entry_category_add_form_fields', 'xyz_comp_entry_category_form_custom_field_add', 10 );
add_action( 'xyz_comp_entry_category_edit_form_fields', 'xyz_comp_entry_category_form_custom_field_edit', 10, 2 );
/* Add */
function xyz_comp_entry_category_form_custom_field_add( $taxonomy ) {
?>
<div class="form-field">
<label for="comp_email_template_id"><?php _e( "Email template", "sb-comps" ); ?></label>
<select name="comp_email_template_id" required>
<option value="">Please select</option>
<?php
$args = array(
'post_type' => 'xyz_comp_template',
'orderby' => 'post_title',
'order' => 'ASC',
'posts_per_page' => -1
);
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post(); ?>
<option value="<?php echo get_the_ID(); ?>"><?php echo the_title(); ?></option>
<?php endwhile;
wp_reset_postdata();
?>
</select>
</div>
<?php
}
/* Edit */
function xyz_comp_entry_category_form_custom_field_edit( $tag, $taxonomy ) {
$comp_email_template_id_option = 'comp_email_template_id_' . $tag->term_id;
$comp_email_template_id = get_option( $comp_email_template_id_option ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="tr_details"><?php _e( "Email template", "sb-comps" ); ?></label></th>
<td>
<select name="comp_email_template_id" required>
<option value="">Please select</option>
<?php
$args = array(
'post_type' => 'xyz_comp_template',
'orderby' => 'post_title',
'order' => 'ASC',
'posts_per_page' => -1
);
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post(); ?>
<option value="<?php echo get_the_ID(); ?>"><?php echo the_title(); ?></option>
<?php endwhile;
wp_reset_postdata();
?>
</select>
</td>
</tr>
<?php
}
/* Save */
add_action( 'created_category', 'xyz_comp_entry_category_form_custom_field_save', 10, 2 );
add_action( 'edited_category', 'xyz_comp_entry_category_form_custom_field_save', 10, 2 );
function xyz_comp_entry_category_form_custom_field_save( $term_id, $tt_id ) {
if ( isset( $_POST['comp_email_template_id'] ) ) {
$comp_email_template_id = 'comp_email_template_id_' . $term_id;
update_option( $comp_email_template_id, $_POST['comp_email_template_id'] );
}
}
..., которое действительно показывает поле при добавленииили отредактируйте:
Но есть две вещи, с которыми мне нужна помощь.
1) Как узнать, сохраняет лиданные в базе данных (например, где я буду искать, используя PHPMyAdmin)
2) Как получить поле выбора для автоматического выбора правильной опции, которая была сохранена (при редактировании)