Justin Tadlock有一个很好的教程可以帮助您入门:
http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields
但是,有一些处理复选框的细节,如果您想使复选框与标记/类别相对应,还有一些自定义代码。
要生成表单字段并保存数据,请使用以下代码段:
<?php
function user_interests_fields( $user ) {
// get product categories
$tags = get_terms(\'post_tag\', array(\'hide_empty\' => false));
$user_tags = get_the_author_meta( \'user_interests\', $user->ID );
?>
<table class="form-table">
<tr>
<th>My interests:</th>
<td>
<?php
if ( count( $tags ) ) {
foreach( $tags as $tag ) { ?>
<p><label for="user_interests_<?php echo esc_attr( $tag->slug); ?>">
<input
id="user_interests_<?php echo esc_attr( $tag->slug); ?>"
name="user_interests[<?php echo esc_attr( $tag->term_id ); ?>]"
type="checkbox"
value="<?php echo esc_attr( $tag->term_id ); ?>"
<?php if ( in_array( $tag->term_id, $user_tags ) ) echo \' checked="checked"\'; ?> />
<?php echo esc_html($tag->name); ?>
</label></p><?php
}
} ?>
</td>
</tr>
</table>
<?php
}
add_action( \'show_user_profile\', \'user_interests_fields\' );
add_action( \'edit_user_profile\', \'user_interests_fields\' );
// store interests
function user_interests_fields_save( $user_id ) {
if ( !current_user_can( \'edit_user\', $user_id ) )
return false;
update_user_meta( $user_id, \'user_interests\', $_POST[\'user_interests\'] );
}
add_action( \'personal_options_update\', \'user_interests_fields_save\' );
add_action( \'edit_user_profile_update\', \'user_interests_fields_save\' );
?>
然后您可以调用
get_the_author_meta()
函数获取标记ID数组,然后可以在查询中使用这些ID,例如:
query_posts( array( \'tag_id\' => get_the_author_meta( \'user_interests\', $user_id ) ) );