I found a useful blog post on how to add text fields to the “link management” admin menu in WordPress: http://planetozh.com/blog/2008/02/wordpress-snippet-add_meta_box/
But how do you save this information into your database? This is a three step approach.
1. Add the fields to you database:
add_action('activate_geo_blogroll.php','geo_blogroll_update_db'); function geo_blogroll_update_db(){ global $wpdb; $wpdb->query("ALTER TABLE $wpdb->links ADD COLUMN link_city varchar(255);"); $wpdb->query("ALTER TABLE $wpdb->links ADD COLUMN link_state varchar(255);"); }
2. Add text fields to the link admin screen:
add_action('admin_menu', 'add_geo_meta_to_links'); function add_geo_meta_to_links() { add_meta_box ('geo_link', 'Link Geography', 'geo_blogroll_form', 'link'); } function geo_blogroll_form () { global $link; ?> <table class="form-table" style="width: 100%;" cellspacing="2" cellpadding="5"> <tr class="form-field"> <th value="top" scope="row"><label for="blog_city"><?php _e('City'); ?></label></th> <td> <input name="blog_city" type="text" id="blog_city" value="<?php echo $link->link_city; ?>" style="width: 95%" /> </td> </tr> <tr class="form-field"> <th value="top" scope="row"><label for="blog_state"><?php _e('State'); ?></label></th> <td> <input name="blog_state" type="text" id="blog_state" value="<?php echo $link->link_state; ?>" style="width: 95%" /> </td> </tr> </table> <?php } ?>
3. And finally save this information to the database every time someone saves a new link or updates an old link:
add_action('edit_link', 'geo_blogroll_save_meta'); add_action('add_link', 'geo_blogroll_save_meta'); function geo_blogroll_save_meta ($link_id){ global $wpdb; $sql_statement = "UPDATE wp_links SET link_city='".$_POST['blog_city']. "', link_state='".$_POST['blog_state']. "' WHERE link_id =".$link_id.";"; $wpdb->query($sql_statement); }
Leave a Reply