В настоящее время я пытаюсь добавить мета-мету к продукту при создании заказа, чтобы она была видна на экране администратора заказа.
Я немного сбит с толку, потому что это должно быть относительно просто. задача, но она просто не играет в мяч.
Приведенная ниже функция вызывается через woocommerce_new_order
public function process_new_order($order_id) {
$order = wc_get_order($order_id);
// Loop over order items (products)
foreach ($order->get_items() as $item_id => $item) {
$product = $item->get_product();
// Check if the product has variations
if ($product->is_type('variation')) {
// Get the variation attributes (including "License Type")
$variation_attributes = $product->get_variation_attributes();
// Check for "License Type" variation
if (isset($variation_attributes['attribute_license-type'])) {
$license_type = $variation_attributes['attribute_license-type'];
if ($license_type == 'Simple') {
$this->generate_and_save_license_keys($order_id, $item, 1);
} elseif ($license_type == 'Business') {
$this->generate_and_save_license_keys($order_id, $item, 10);
}
}
}
}
}
Я знаю, что этот код работает, вызываетсяgenerate_and_save_license_keys, и он правильно генерирует ключ, который затем добавляется в базу данных, а мета существует и правильно регистрируется в журнале ошибок согласно этому код:
private function generate_and_save_license_keys($order_id, $item, $count) {
global $wpdb;
$product_id = $item->get_product_id(); // Get the product ID (plugin_id)
$subscription_id = 0; // For simplicity, we assume no subscriptions for now
// Initialize an array to hold the generated license keys
$license_keys = [];
// Generate the required number of license keys
for ($i = 0; $i < $count; $i++) {
$license_key = $this->generate_license_key();
// Add license key to the array
$license_keys[] = $license_key;
// Insert the license key into the database
$wpdb->insert(
$wpdb->prefix . 'llm_licenses',
[
'license_code' => $license_key,
'staging_url' => null, // Set staging URL as NULL
'subscription_id' => $subscription_id,
'plugin_id' => $product_id,
'order_id' => $order_id
]
);
}
// Store the license keys as a single meta field// Debug to check meta data
$item->add_meta_data('_license_keys', implode(', ', $license_keys), true);
error_log('Meta keys for item ' . $item->get_id() . ': ' . print_r($item->get_meta('_license_keys', true), true));
}
Однако эти данные не отображаются под товаром на экране единого заказа администратора.
Я пробовал добавить их вручную с помощью также функция, которая вызывается через woocommerce_order_item_meta_end, но кажется, что она срабатывает только тогда, когда я меняю порядок на «Обработка», а не при каждой загрузке страницы, и даже тогда она не отображается, а журнал ошибок показывает 0 данные для get_meta, даже если они были зарегистрированы при использовании get_meta черезgenerate_and_save_license_keys.
public function display_license_keys_on_order_screen($item_id, $item, $order, $plain_text) {
// Retrieve the meta data
$license_keys = $item->get_meta('_license_keys', true);
var_dump($license_keys);
print_r("fired");
// Log the meta data for debugging
error_log('Displaying license keys for item ' . $item_id . ': ' . print_r($license_keys, true));
if ($license_keys) {
// Display license keys on the order item page
echo '
' . __('License Keys', 'text-domain') . ': ' . esc_html($license_keys) . '
';
} else {
// Log if no license keys found for the item
error_log('No license keys found for item ' . $item_id);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -new-order
WooCommerce Hook add_meta_data не работает внутри woocommerce_new_order ⇐ Php
Кемеровские программисты php общаются здесь
1730993815
Anonymous
В настоящее время я пытаюсь добавить мета-мету к продукту при создании заказа, чтобы она была видна на экране администратора заказа.
Я немного сбит с толку, потому что это должно быть относительно просто. задача, но она просто не играет в мяч.
Приведенная ниже функция вызывается через woocommerce_new_order
public function process_new_order($order_id) {
$order = wc_get_order($order_id);
// Loop over order items (products)
foreach ($order->get_items() as $item_id => $item) {
$product = $item->get_product();
// Check if the product has variations
if ($product->is_type('variation')) {
// Get the variation attributes (including "License Type")
$variation_attributes = $product->get_variation_attributes();
// Check for "License Type" variation
if (isset($variation_attributes['attribute_license-type'])) {
$license_type = $variation_attributes['attribute_license-type'];
if ($license_type == 'Simple') {
$this->generate_and_save_license_keys($order_id, $item, 1);
} elseif ($license_type == 'Business') {
$this->generate_and_save_license_keys($order_id, $item, 10);
}
}
}
}
}
Я знаю, что этот код работает, вызываетсяgenerate_and_save_license_keys, и он правильно генерирует ключ, который затем добавляется в базу данных, а мета существует и правильно регистрируется в журнале ошибок согласно этому код:
private function generate_and_save_license_keys($order_id, $item, $count) {
global $wpdb;
$product_id = $item->get_product_id(); // Get the product ID (plugin_id)
$subscription_id = 0; // For simplicity, we assume no subscriptions for now
// Initialize an array to hold the generated license keys
$license_keys = [];
// Generate the required number of license keys
for ($i = 0; $i < $count; $i++) {
$license_key = $this->generate_license_key();
// Add license key to the array
$license_keys[] = $license_key;
// Insert the license key into the database
$wpdb->insert(
$wpdb->prefix . 'llm_licenses',
[
'license_code' => $license_key,
'staging_url' => null, // Set staging URL as NULL
'subscription_id' => $subscription_id,
'plugin_id' => $product_id,
'order_id' => $order_id
]
);
}
// Store the license keys as a single meta field// Debug to check meta data
$item->add_meta_data('_license_keys', implode(', ', $license_keys), true);
error_log('Meta keys for item ' . $item->get_id() . ': ' . print_r($item->get_meta('_license_keys', true), true));
}
Однако эти данные не отображаются под товаром на экране единого заказа администратора.
Я пробовал добавить их вручную с помощью также функция, которая вызывается через woocommerce_order_item_meta_end, но кажется, что она срабатывает только тогда, когда я меняю порядок на «Обработка», а не при каждой загрузке страницы, и даже тогда она не отображается, а журнал ошибок показывает 0 данные для get_meta, даже если они были зарегистрированы при использовании get_meta черезgenerate_and_save_license_keys.
public function display_license_keys_on_order_screen($item_id, $item, $order, $plain_text) {
// Retrieve the meta data
$license_keys = $item->get_meta('_license_keys', true);
var_dump($license_keys);
print_r("fired");
// Log the meta data for debugging
error_log('Displaying license keys for item ' . $item_id . ': ' . print_r($license_keys, true));
if ($license_keys) {
// Display license keys on the order item page
echo '
[b]' . __('License Keys', 'text-domain') . ':[/b] ' . esc_html($license_keys) . '
';
} else {
// Log if no license keys found for the item
error_log('No license keys found for item ' . $item_id);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79167166/woocommerce-hook-add-meta-data-not-working-inside-of-woocommerce-new-order[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия