将两个数组合并到xml post字符串中

时间:2014-04-25 21:06:07

标签: php arrays string wordpress post

WordPress Stackexchange说我的帖子不在话题,因为它是一个php语法问题而不是WordPress问题所以我在这里发帖希望得到帮助。

经过无数的测试运行以克服致命的解析错误,我现在有一个错误的免费php文件,但它什么也没做。数组值未在服务器将接受的xml字符串中正确传递,我无法看到任何告诉我任何错误。

此文件最初编写为在html网站上运行,并且所有数组的字段都可以手动输入到一个数组中,以测试xml字符串的连接和处理。

数组的前六个值是永远不会改变的已知值,可以进行硬编码,但最后10个值总是不同的,必须查询才能创建数组。

我需要将两个数组中的数据传递到一个单独的xml字符串中,或​​者以某种方式编写一个完成工作的数组。

我是第一个调整此代码以在WordPress环境中工作的人。 mepr-字段是我需要从WordPress DB获得的自定义usermeta字段。所有这些文件都是通过用户注册信息,因此合作伙伴网站拥有第一个网站所做的所有相同信息,因此用户不必为两个网站注册两次。

这是我的代码,目前无法正常工作,也无法报告错误:

error_reporting(E_ERROR);
ini_set(‘display_errors’,true);

// Set the Query POST parameters
$query_vals = array(
'api_username' => 'set-value-username',
'api_password' => 'set-value-password', 
'api_key' => 'set-value-api-key',
'perkalert' => 0,
'offer_radius' => 20,
'send_welcome_email' => 1
);

// Insert pluggable.php before calling get_currentuserinfo()
require (ABSPATH . WPINC . '/pluggable.php');

// Get new WordPress user registration information
global $current_user;
get_currentuserinfo(); 
// Values in this array are variables
$query_vals == array(
'firstname: ' . $current_user==> 'user_firstname',
'lastname: ' . $current_user==> 'user_lastname',
'adress: ' . $current_user==> 'mepr-address-one',
'city: ' . $current_user==> 'mepr-address-city',
'state: ' . $current_user==> 'mepr-address-state',
'zip: ' . $current_user==> 'mepr-address-zip',
'country: ' . $current_user==> 'mepr-address-country',
'email: ' . $current_user==> 'user_email',
'username: ' . $current_user==> 'user_login',
'password: ' . $current_user==> 'user_pass'
);

// Generate the POST string
$postdata = '';
foreach($query_vals as $key => $value) {
$postdata .= $key.'='.urlencode($value).'&';
}

// Chop of the trailing ampersand
$postdata = rtrim($postdata, '&');

// create a new cURL resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://third-party-site.com/register_member.xml');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

// Save response to a string
$response = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($response);

if ($xml === false) {
die('Error parsing XML');   
}

//var_dump($xml);
echo "Status: ".$xml->status;

主要关注的是两个数组以及如何传递数据。如果我收到WordPress用户数据时出错,我会用WordPress Stackexchange来解决这个问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为它取决于您要发布的网站所期望的内容,但是您有没有理由将所有字段合并为一个关联数组?

所以不要这样:

$query_vals == array(
'firstname: ' . $current_user==> 'user_firstname',
'lastname: ' . $current_user==> 'user_lastname',
'adress: ' . $current_user==> 'mepr-address-one',
'city: ' . $current_user==> 'mepr-address-city',
'state: ' . $current_user==> 'mepr-address-state',
'zip: ' . $current_user==> 'mepr-address-zip',
'country: ' . $current_user==> 'mepr-address-country',
'email: ' . $current_user==> 'user_email',
'username: ' . $current_user==> 'user_login',
'password: ' . $current_user==> 'user_pass'
);   

我认为你需要有这样的:

$query_vals['firstname'] = $current_user==> 'user_firstname';  
$query_vals['lastname']  = $current_user==> 'user_lastname';  
$query_vals['adress']    = $current_user==> 'mepr-address-one';  
$query_vals['city']      = $current_user==> 'mepr-address-city';  
$query_vals['state']     = $current_user==> 'mepr-address-state';  
$query_vals['zip']       = $current_user==> 'mepr-address-zip';  
$query_vals['country']   = $current_user==> 'mepr-address-country';  
$query_vals['email']     = $current_user==> 'user_email';  
$query_vals['username']  = $current_user==> 'user_login';  
$query_vals['password']  = $current_user==> 'user_pass';  

现在你有一个关联数组,你的帖子可能会有效,这取决于对方的期望。