更新用户元数组

时间:2015-11-28 12:03:19

标签: arrays wordpress meta

我正在为我的用户个人资料开发评论部分,我正在为用户提供选项,使评论可见或不可用。

我创建了一个数组:

$comment = array($comment_name, $comment_text, $time, $visible);

默认情况下,$ visible是false值。 然后我add_user_meta

add_user_meta($user->ID, 'recommend_comment', $comment);  

这对我来说非常合适,我已经显示了一系列评论。 现在我想用$ visible = true来更新数组,如果用户点击按钮但不确定如何使用update_user_meta访问特定的数组行。 我尝试过:

update_user_meta($user->ID, 'recommend_comment', $prikazi, [2]);

但那不起作用。知道如何制作这个吗?

2 个答案:

答案 0 :(得分:1)

您可以使用update_user_meta()进行添加和/或更新,请参阅参考:update_user_meta

要更新可见,您可以执行以下操作:

$comment = get_user_meta( $user->ID, 'recommend_comment', TRUE );
if( !empty( $comment ) ) {
  $comment[3] = FALSE;
  update_user_meta( $user->ID, 'recommend_comment', $comment );
}

为了改善它,您可以改为使用数组中的键,例如:

$comment = array( 'name' => $comment_name, 'text' => $comment_text, 'time' => $time, 'visible' => $visible);
// And then you can access with:
$comment['visible'] = TRUE;

更新:带有评论列表的示例:

$comments = array(
  array( 'name' => 'AAA', 'text' => 'Just a comment', 'time' => '12:50', 'visible' => FALSE ),
  array( 'name' => 'BBB', 'text' => 'Another one', 'time' => '14:10', 'visible' => TRUE ),
);
// Create/updates the comments
update_user_meta( $user->ID, 'recommend_comment', $comments );
// ...
// Load the comments
$comments = get_user_meta( $user->ID, 'recommend_comment', TRUE );
if( !empty( $comment ) ) {
  // then you can manipulate them with:
  $comments[1]['visible'] = FALSE;
  // and update the meta as before
  update_user_meta( $user->ID, 'recommend_comment', $comments );
}

答案 1 :(得分:0)

这对我有用。

//delete_user_meta(get_current_user_id(), 'watchlist');

    $new_value = $_GET['id'];

    if(empty($new_value)){

        echo 'No value';

        die();

    }

    $watchlist = get_user_meta( get_current_user_id(), 'watchlist', true);

    if( !empty( $watchlist ) ) {

        $check_value = unserialize( $watchlist );

        // Check if value exists
        if( in_array( $new_value, $check_value ) ){

            echo 'Already exists';

        }else{

            $check_value[] = $new_value; 

            update_user_meta( get_current_user_id(), 'watchlist', serialize( $check_value ) );

        }


    }else{

        update_user_meta( get_current_user_id(), 'watchlist', serialize( [$new_value] ));

    }

    print_r(unserialize( $watchlist ));