我正在尝试向用户编辑页面添加新字段,但我收到此错误
注意:类WP_User的对象无法转换为int in 第49行的C:\ xampp \ htdocs \ wordpress \ wp-includes \ capabilities.php
这是我用于函数的代码,
static function my_extra_user_fields( $user_id ) {
echo $user_id->ID;
$user_meta = get_user_meta($user_id);
if (!empty ($user_meta['_is_post_agent'][0])) {
$check_true = $user_meta['_is_post_agent'][0];
}
else {
$check_true="false";
}
?>
<h3>Agent Author</h3>
<table class="form-table">
<tr>
<th><label for="agent_author">Agent Author</label></th>
<td>
<input type="checkbox" name="agent_author" value="is_author_agent" <?php if($check_true == 'true') echo 'checked="checked"';?> >
</td>
</tr>
</table>
<?php }
static function save_my_extra_user_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}else{
if(isset($_POST['agent_author']) && $_POST['agent_author'] == true) {
update_user_meta( $user_id, '_is_post_agent', 'true');
}
elseif(isset($_POST['agent_author']) && $_POST['agent_author'] == false) {
update_user_meta( $user_id, '_is_post_agent', 'false');
}
}
}
对于我在这里做错了什么,我将不胜感激!
答案 0 :(得分:1)
get_user_meta()
期望第一个参数是一个整数(或者可以转换为整数的东西。如果该参数不能转换为整数,则会得到该错误。
尝试将上面的第3行切换为:
$user_meta = get_user_meta($user_id->ID);
根据the Wordpress documentation,它期望是一个整数。
答案 1 :(得分:0)
这是向用户编辑屏幕添加复选框字段“代理作者”的正确方法:
add_action( 'show_user_profile', 'brg_agent_author_field' );
add_action( 'edit_user_profile', 'brg_agent_author_field' );
function brg_agent_author_field( $user ) {
$is_agent = get_the_author_meta( 'agent_author', $user->ID );
?>
<h3>Agent Author</h3>
<table class="form-table">
<tr>
<th><label for="agent_author">Agent Author</label></th>
<td>
<input type="checkbox" name="agent_author" <?php if ($is_agent) echo 'checked="checked"'; ?>>
</td>
</tr>
</table>
<?php }
这就是你如何拯救它:
add_action( 'personal_options_update', 'brg_save_agent_author_field' );
add_action( 'edit_user_profile_update', 'brg_save_agent_author_field' );
function brg_save_agent_author_field( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
update_usermeta( $user_id, 'agent_author', $_POST['agent_author'] );
}
最简单的方法是将此代码添加到主题functions.php
。