Как я могу получить файл из дополнительной информации в порядке woocommerce в WordPress? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь получить содержимое файла, который содержится (я полагаю) в рамках порядка woocommerce, и, хотя я знаком с PHP, я понятия не имею, как использовать wordpress, поэтому прошу прощения, если у этого есть очевидное решение.

Я добавил это дополнительное поле с именем myfield2 для загрузки файла через WooCheckout.Этот файл содержит только объект json.Есть еще одно поле с именем myfield1, которое представляет собой просто выбранное в раскрывающемся списке строковое значение, и я получаю его очень хорошо.

Вот мой ближайший пунт в этом:

<?PHP
$some_order_number = "869";
echo "<br>-----------------------------------<br>";
$order = get_post_meta( $some_order_number );
var_dump($order);
echo "<br>-----------------------------------<br>";
var_dump($order["myfield1"]);
echo "<br>-----------------------------------<br>";
var_dump($order["myfield2"]);
?>

ЧтоЯ вижу на итоговой странице следующее:

array(47) { <...All the order details (name, address, ordered item etc)...> } 
"-----------------------------------------"
array(1) { [0]=> string(11) "Three times" } 
"-----------------------------------------"
array(1) { [0]=> string(4) "895," }

Что мне делать с этим значением "895,"?Это идентификационный номер, который идет куда-то?Или я поступаю неправильно?

1 Ответ

0 голосов
/ 07 февраля 2019

После долгих поисков в документации WooCommerce я нашел кое-что, что работает!Я не могу гарантировать, что это самый эффективный способ сделать это, но он выполняет свою работу.

<?PHP

// Get the file's field name
// Known as "abbreviation" on WooCheckout
$file_field_name = 'myfield2';

// Get the order number. (could use wc_get_orders() )
$order_id = "896";

// Get the order object for this order id
$order = wc_get_order( $order_id );

// Get the attachment ID.
$attachment_id = $order->get_meta($file_field_name);

// Get the properties of this attachment
$props = wc_get_product_attachment_props( $attachment_id );

// Select the URL from the properties
$file_url = $props["url"];

// Download the file data from this url.
$file_data = file_get_contents($file_url);

// ...now we do stuff with the file contents.
echo "file contents: <br>";
var_dump($file_data);

?>

.. И здесь это в одной функции, для копирования и вставки.

/**
 * Given the order object and the file's field name,
 * get the file contents from the uploaded content.
 */
function get_order_file($order, $field_name){
    $attachment_id = $order->get_meta($field_name);
    $props = wc_get_product_attachment_props( $attachment_id );
    $file_data = file_get_contents($props["url"]);
    return $file_data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...