使用POST字符串获取当前用户数组

时间:2014-04-28 作者:NetMonkey

我需要获得10个当前用户字段,并将字段值传递给post字符串。post字符串要求每个值具有特定的标签名称。

示例-post字符串应为\'firstname\' => \'value\', 不\'user_firstname\' => \'value\'. 在几天的语法分析错误之后,现在我只得到了一个失败状态。我的数组代码或post代码(或两者)都有缺陷。我今天读了一篇2011年的帖子,上面说,自从WordPress 3.3(目前的版本是3.9)以来,自定义用户字段的调用方式是不同的。帖子>http://goo.gl/x5deHi 表示调用自定义WP字段(如我的5)的方法如下:

    if ( $current_user->has_prop( \'my-field\' ) ) )
echo \'<p>
    \' . $current_user->get( \'my-field\' ) . \'
    </p>\';`
这就是我现在的代码:

    //Get values for these 10 user fields 
    function wp_get_current_user() {
    $current_user = wp_get_current_user();

    $current_user_info = array(
    \'firstname\' . $current_user->user_firstname =>\' \',
    \'lastname\' .  $current_user->user_lastname =>\' \',
    if ( $current_user->has_prop( \'mepr-address-one\' ) ) )
    \' . $current_user->get( \'mepr-address-one\' ) .  => \' \',
    if ( $current_user->has_prop( \'mepr-address-city\' ) ) )
    \' . $current_user->get( \'mepr-address-city\' ) .  => \' \',
    if ( $current_user->has_prop( \'mepr-address-state\' ) ) )
    \' . $current_user->get( \'mepr-address-state\' ) .  => \' \',
    if ( $current_user->has_prop( \'mepr-address-zip\' ) ) )
    \' . $current_user->get( \'mepr-address-zip\' ) .  => \' \',
    if ( $current_user->has_prop( \'mepr-address-country\' ) ) )
    \' . $current_user->get( \'mepr-address-country\' ) .  => \' \',   
    \'email\' . $current_user->user_email =>\' \',
    \'username\' . $current_user->user_login =>\' \',
    \'password\' . $current_user->user_pass =>\' \'

    );
    }
    // Generate the POST string
    // These last three lines aren\'t posting my get user values
    $postdata = \'\';
    foreach($query_vals as $key => $value){ 
$postdata .= $key.\'=\'.urlencode($n=$value).\'&\';
    }
post字符串需要满足post中描述的参数,即:

    foreach ( get_user_meta( $user->ID ) as $key => $values ) {
var_dump( $key, $values );
    }
但作为一名php新手,我不确定编码语法。我不需要定义has\\u prop才能使用它吗?

1 个回复
SO网友:cybmeta

您的代码有很多错误。例如,您应该在内部定义global $current_user, 不在外面。其他错误,您使用$query_vals 未定义该变量的函数外部的变量。无论如何,我会使用这个函数wp_get_current_user() 之前不需要调用的init action hook.

例如,如果要将POST字符串用作javascript的数据:

add_action( \'wp_enqueue_scripts\', \'wpse_scripts\' );

function wpse_scripts() {

      $user_fields = wpse_get_current_user_info();
      $postdata = http_build_query( $user_fields );

      wp_localize_script( \'my_script\', \'my_script_data\', $postdata );

}

function wpse_get_current_user_info() {
      $current_user = wp_get_current_user();
      $current_user_info = array(
                    \'firstname\' => $current_user->user_firstname,
                    \'lastname\'  => $current_user->user_lastname,
                    //Add the rest of info you need
                    //In the forman key => value
                   );
      return $current_user_info;
}
为了以更具体的方式帮助您,您应该告诉我们您将在哪里使用POST字符串和上下文。

使用WP HTTP API将用户数据发送到服务器的基本示例(当您需要在将用户数据发送到第三方服务后获取响应正文时,请调用wpse\\u send\\u user\\u data):

function wpse_send_user_data() {

      //You should check here if the request should be done
      //if( $some_control == true ) return;

      $uerdata = wpse_get_current_user_info();

      $args = array( \'method\' => \'POST\', \'body\' => $uerdata );
      $request = wp_remote_request( \'http://www.example.com\', $args )

      $response = wp_remote_retrieve_body($request);

      return $response;

}

function wpse_get_current_user_info() {
      $current_user = wp_get_current_user();
      $current_user_info = array(
                    \'firstname\' => $current_user->user_firstname,
                    \'lastname\'  => $current_user->user_lastname,
                    //Add the rest of info you need
                    //In the forman key => value
                   );
      return $current_user_info;
}
我更喜欢使用WP HTTP API,但如果要使用cURL:

function wpse_send_user_data() {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL,"http://www.example.com/");
    curl_setopt($ch, CURLOPT_POST, 1);

    // Get userinfo array and set as POST fields
    $uerdata = wpse_get_current_user_info();
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( $uerdata ));

    // receive server response ...
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $server_output = curl_exec ($ch);

    curl_close ($ch);

    // further processing ....
    if ($server_output == "OK") { ... } else { ... }

}

function wpse_get_current_user_info() {
      $current_user = wp_get_current_user();
      $current_user_info = array(
                    \'firstname\' => $current_user->user_firstname,
                    \'lastname\'  => $current_user->user_lastname,
                    //Add the rest of info you need
                    //In the forman key => value
                   );
      return $current_user_info;
}

结束

相关推荐

Show full posts in archive

我有一个问题,我需要在我的归档页面中显示完整的帖子。E、 G.我有>两篇帖子,我想在归档页面中完整显示每一篇帖子。谢谢我该如何处理胡曼主题呢?这是档案的内容。php主题:<?php get_header(); ?> <section class=\"content\"> <?php get_template_part(\'inc/page-title\'); ?> <?php if(function