本文整理汇总了PHP中WP_Error::add_data方法的典型用法代码示例。如果您正苦于以下问题:PHP WP_Error::add_data方法的具体用法?PHP WP_Error::add_data怎么用?PHP WP_Error::add_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WP_Error
的用法示例。
在下文中一共展示了WP_Error::add_data方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: select_service
/**
* @param int $service_id
*
* @return TranslationProxy_Project|WP_Error
*/
public static function select_service($service_id)
{
global $sitepress;
$service_selected = false;
$error = false;
try {
/** @var $service TranslationProxy_Service */
$service = TranslationProxy_Api::proxy_request("/services/{$service_id}.json");
if ($service) {
self::deselect_active_service();
//set language map
$service->languages_map = self::languages_map($service);
//set information about custom fields
$service->custom_fields = self::get_custom_fields($service_id, true);
$service->custom_fields_data = false;
$sitepress->set_setting('translation_service', $service);
$result = $service;
$service_selected = true;
//Force authentication if no user input is needed
if (!TranslationProxy::service_requires_authentication($service)) {
self::authenticate_service($service_id, array());
}
} else {
$result = new WP_Error('0', 'No service selected', array('service_id' => $service_id));
}
} catch (TranslationProxy_Api_Error $e) {
$error = new WP_Error();
$error->add($e->getCode(), 'Unable to select service');
$error->add_data(array('details' => $e->getMessage()), $e->getCode());
$result = $error;
} catch (Exception $e) {
$error = new WP_Error();
$error->add($e->getCode(), 'Unable to select service');
$error->add_data(array('details' => $e->getMessage()), $e->getCode());
$result = $error;
}
//Do not store selected service if this operation failed;
if ($error || !$service_selected) {
$sitepress->set_setting('translation_service', false);
}
$sitepress->save_settings();
return $result;
}
示例2: array
/**
*
* @return mixed WP_Error or Array (result)
*/
function do_payment($params)
{
$sandbox_mode = $this->parent_settings["sandbox_mode"] == "yes";
// Yup, the checkbox settings return as 'yes' or 'no'
$test_mode = $this->parent_settings["test_mode"] == "yes";
$order_text = json_encode($params);
$url = $sandbox_mode ? $this->sandbox_url : ($url = $this->live_url);
// Deferred payments need to post to the /credit_cards endpoint.
if (isset($params["deferred"]) && $params["deferred"]) {
// Replace the URL with the tokenize method and re-create the order text (json payload)
$url = str_replace("purchases", "credit_cards", $url);
$payload = array("card_holder" => $params["card_holder"], "card_number" => $params["card_number"], "card_expiry" => $params["card_expiry"], "cvv" => $params["cvv"]);
$ip = get_post_meta($post_id, "Customer IP Address", true);
if (empty($ip)) {
$ip = "127.0.0.1";
}
if (!isset($payload["customer_ip"])) {
$payload["customer_ip"] = $ip;
}
$order_text = json_encode($payload);
}
$args = array('method' => 'POST', 'body' => $order_text, 'headers' => array('Authorization' => 'Basic ' . base64_encode($this->parent_settings["username"] . ":" . $this->parent_settings["token"]), 'X-Test-Mode' => $test_mode, 'User-Agent' => "WooCommerce Plugin " . $this->version), 'timeout' => 30);
try {
$this->response = (array) wp_remote_request($url, $args);
if ((int) $this->response["response"]["code"] != 200 && (int) $this->response["response"]["code"] != 201) {
$error = new WP_Error();
$error->add(1, "Credit Card Payment failed: " . $this->response["response"]["message"]);
$error->add_data($this->response);
return $error;
}
$this->response_data = json_decode($this->response['body']);
if (!$this->response_data->successful) {
$error = new WP_Error();
$error->add(2, "Gateway Error", $this->response_data->errors);
return $error;
}
// If we are doing a deferred payments we override the data here.
if (isset($params["deferred"]) && $params["deferred"]) {
return array("card_token" => $this->response_data->response->token, "card_number" => $this->response_data->response->card_number, "card_expiry" => $this->response_data->response->card_expiry, "card_holder" => $this->response_data->response->card_holder);
}
if (!$this->response_data->response->successful) {
$error = new WP_Error();
$error->add(3, "Payment Declined", array("message" => $this->response_data->response->message, "id" => $this->response_data->response->id));
return $error;
}
if ($this->response_data->response->successful) {
return array("transaction_id" => $this->response_data->response->id, "card_token" => $this->response_data->response->card_token);
}
} catch (Exception $e) {
$error = new WP_Error();
$error->add(4, "Unknown Error", $e);
return $error;
}
}
示例3: array
/**
* Join array of statuses into one status
*
* @since 2.0
* @access public
*
* @param array of WP_Errors objects $statuses
* @param ( object | array of object ) $join_status second status to join may be single WP_Error object or array of WP_Error objects
* @return object WP_Error
*/
function join_errors($statuses = array(), $join_status = null)
{
$return = new WP_Error();
// If multiple arguments were passed join different wp errors
if (!empty($join_status)) {
if (is_array($statuses)) {
$statuses[] = $join_status;
} else {
$statuses = array($statuses, $join_status);
}
}
if (empty($statuses)) {
return $return;
}
// Loop through statuses
foreach ($statuses as $status) {
// Skip empty statuses
if (!is_wp_error($status) or !$status->get_error_codes()) {
continue;
}
foreach ($status->get_error_codes() as $code) {
// Add messages first
$messages = $status->get_error_messages($code);
// we need only unique messages
if (in_array($code, $return->get_error_codes())) {
$messages = array_diff($messages, $return->get_error_messages($code));
}
// add messages if they present
if (!empty($messages)) {
foreach ($messages as $message) {
$return->add($code, $message);
}
}
// Add code data
$data = $status->get_error_data($code);
// Join return data and our data
if (!empty($data) and $return->get_error_data($code)) {
// add new data according to return data type
if (is_array($return->get_error_data($code))) {
// passed data is array
$data = array_merge($data, $return->get_error_data($code));
} elseif (is_array($data)) {
$data[] = $return->get_error_data($code);
} elseif (is_array($return->get_error_data($code))) {
$data = array_push($return->get_error_data($code), $data);
} elseif (is_string($data) and is_string($return->get_error_data($code))) {
$data = $return->get_error_data($code) . $data;
}
}
if (!empty($data)) {
$return->add_data($data, $code);
}
}
// Loop for each code inside status
}
// Loop for each passed statuses
return $return;
}
示例4: doApiQuery
/**
* Wrapper around HTTP calls, always returns an array of theme information.
*
* @param string $action One of the supported actions of the repository
* @param array $params Parameters for the action
* @param string $locale
* @return array<object>|\WP_Error
*/
protected function doApiQuery($action, array $params = [], $locale = '')
{
$url_params = ['key' => $this->settings['key'], 'action' => $action];
if ($params) {
if (function_exists('gzcompress')) {
$url_params['gzparams'] = gzcompress(json_encode($params), 9);
} else {
$url_params['params'] = json_encode($params);
}
}
$url_params = array_map('rawurlencode', $url_params);
$url = add_query_arg($url_params, self::URL);
if (strlen($url) > 2000) {
// Lengths beyond 2000 seem unhealthy.
return new \WP_Error(815, __('Your theme repository query is too long.', 'pfadfinden-theme-updater'));
}
$headers = [];
if (!strlen($locale)) {
$locale = get_locale();
}
if (strlen($locale)) {
$locale = str_replace('_', '-', $locale);
$headers['Accept-Language'] = "{$locale}, en; q=0.6, *; q=0.1";
}
// A GET request allows for caching
$response = wp_remote_get($url, ['headers' => $headers]);
if (is_wp_error($response)) {
return $response;
}
$body = json_decode(wp_remote_retrieve_body($response), true);
if (isset($body['type']) && 'success' === $body['type']) {
return array_map(function (array $theme) {
return (object) $theme;
}, $body['themes']);
}
if (WP_DEBUG) {
trigger_error(wp_remote_retrieve_body($response), E_USER_ERROR);
}
$error = new \WP_Error(wp_remote_retrieve_response_code($response), isset($body['message']) ? $body['message'] : __('Unknown theme repository server error, no message attached.', 'pfadfinden-theme-updater'));
if (isset($body['exception'])) {
$error->add_data($body['exception']);
}
return $error;
}
示例5: create_item
/**
* Creates a single user.
*
* @since 4.7.0
* @access public
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function create_item($request)
{
if (!empty($request['id'])) {
return new WP_Error('rest_user_exists', __('Cannot create existing user.'), array('status' => 400));
}
$schema = $this->get_item_schema();
if (!empty($request['roles']) && !empty($schema['properties']['roles'])) {
$check_permission = $this->check_role_update($request['id'], $request['roles']);
if (is_wp_error($check_permission)) {
return $check_permission;
}
}
$user = $this->prepare_item_for_database($request);
if (is_multisite()) {
$ret = wpmu_validate_user_signup($user->user_login, $user->user_email);
if (is_wp_error($ret['errors']) && !empty($ret['errors']->errors)) {
$error = new WP_Error('rest_invalid_param', __('Invalid user parameter(s).'), array('status' => 400));
foreach ($ret['errors']->errors as $code => $messages) {
foreach ($messages as $message) {
$error->add($code, $message);
}
if ($error_data = $error->get_error_data($code)) {
$error->add_data($error_data, $code);
}
}
return $error;
}
}
if (is_multisite()) {
$user_id = wpmu_create_user($user->user_login, $user->user_pass, $user->user_email);
if (!$user_id) {
return new WP_Error('rest_user_create', __('Error creating new user.'), array('status' => 500));
}
$user->ID = $user_id;
$user_id = wp_update_user(wp_slash((array) $user));
if (is_wp_error($user_id)) {
return $user_id;
}
add_user_to_blog(get_site()->id, $user_id, '');
} else {
$user_id = wp_insert_user(wp_slash((array) $user));
if (is_wp_error($user_id)) {
return $user_id;
}
}
$user = get_user_by('id', $user_id);
/**
* Fires immediately after a user is created or updated via the REST API.
*
* @since 4.7.0
*
* @param WP_User $user Inserted or updated user object.
* @param WP_REST_Request $request Request object.
* @param bool $creating True when creating a user, false when updating.
*/
do_action('rest_insert_user', $user, $request, true);
if (!empty($request['roles']) && !empty($schema['properties']['roles'])) {
array_map(array($user, 'add_role'), $request['roles']);
}
if (!empty($schema['properties']['meta']) && isset($request['meta'])) {
$meta_update = $this->meta->update_value($request['meta'], $user_id);
if (is_wp_error($meta_update)) {
return $meta_update;
}
}
$user = get_user_by('id', $user_id);
$fields_update = $this->update_additional_fields_for_object($user, $request);
if (is_wp_error($fields_update)) {
return $fields_update;
}
$request->set_param('context', 'edit');
$response = $this->prepare_item_for_response($user, $request);
$response = rest_ensure_response($response);
$response->set_status(201);
$response->header('Location', rest_url(sprintf('%s/%s/%d', $this->namespace, $this->rest_base, $user_id)));
return $response;
}
示例6: array
/**
*
* @return mixed WP_Error or Array (result)
*/
function do_payment($params)
{
$sandbox_mode = $this->parent_settings["sandbox_mode"] == "yes";
// Yup, the checkbox settings return as 'yes' or 'no'
$test_mode = $this->parent_settings["test_mode"] == "yes";
$order_text = json_encode($params);
$url = $sandbox_mode ? $this->sandbox_url : ($url = $this->live_url);
$args = array('method' => 'POST', 'body' => $order_text, 'headers' => array('Authorization' => 'Basic ' . base64_encode($this->parent_settings["username"] . ":" . $this->parent_settings["token"]), 'X-Test-Mode' => $test_mode, 'User-Agent' => "WooCommerce Plugin " . $this->version), 'timeout' => 30);
try {
$this->response = (array) wp_remote_request($url, $args);
if ((int) $this->response["response"]["code"] != 200 && (int) $this->response["response"]["code"] != 201) {
$error = new WP_Error();
$error->add(1, "Credit Card Payment failed: " . $this->response["response"]["message"]);
$error->add_data($this->response);
return $error;
}
$this->response_data = json_decode($this->response['body']);
if (!$this->response_data->successful) {
$error = new WP_Error();
$error->add(2, "Gateway Error", $this->response_data->errors);
return $error;
}
// If we are doing a deferred payments we override the data here.
if (isset($params["deferred"]) && $params["deferred"]) {
return array("card_token" => $this->response_data->response->token, "card_number" => $this->response_data->response->card_number, "card_expiry" => $this->response_data->response->card_expiry, "card_holder" => $this->response_data->response->card_holder);
}
if (!$this->response_data->response->successful) {
$error = new WP_Error();
$error->add(3, "Payment Declined", array("message" => $this->response_data->response->message, "id" => $this->response_data->response->id, "fraud_result" => $this->response_data->response->fraud_result, "fraud_messages" => $this->response_data->response->fraud_messages));
return $error;
}
if ($this->response_data->response->successful) {
return array("transaction_id" => $this->response_data->response->id, "card_token" => $this->response_data->response->card_token, "fraud_result" => $this->response_data->response->fraud_result, "fraud_messages" => $this->response_data->response->fraud_messages);
}
} catch (Exception $e) {
$error = new WP_Error();
$error->add(4, "Unknown Error", $e);
return $error;
}
}
示例7: add_data_to_wp_error
private function add_data_to_wp_error(WP_Error $error, array $data)
{
$error_data = (array) $error->get_error_data();
$error->add_data(array_merge($error_data, $data));
return $error;
}
示例8: convertErrorArray
function convertErrorArray($data)
{
if (!is_array(@$data['errors'])) {
return $data;
}
$errors = new WP_Error();
foreach ($data['errors'] as $code => $error) {
if (is_array($error)) {
foreach ($error as $message) {
$errors->add($code, $message);
}
} elseif (is_string($error)) {
$errors->add($code, $error);
}
}
if (isset($data['error_data'])) {
if (is_array($data['error_data'])) {
foreach ($data['error_data'] as $code => $errData) {
$errors->add_data($errData, $code);
}
}
}
return $errors;
}