为什么按日期和限制从 Shopify 商店获取订单总是返回最新日期的订单?例如:如果我使用以下查询进行查询以获取 2012 年 8 月 1 日起的 5 个订单:
/admin/orders.json?status=open&created_at_min=2012-08-01 12:00&limit=5
因为我在 2012 年 8 月 20 日有 5 个订单,在 2012 年 8 月 31 日有 5 个订单,但这将返回最新日期(2012 年 8 月 31 日)的 5 个订单。
在functions.php中
add_action( 'woocommerce_add_order_item_meta', 'custom_add_item_sku', 10, 3 );
function custom_add_item_sku( $item_id, $values, $cart_item_key ) {
$item_sku = get_post_meta( $values[ 'product_id' ], '_sku', true );
wc_add_order_item_meta( $item_id, 'SKU', $item_sku , false );
}
Run Code Online (Sandbox Code Playgroud)
但它在产品标题下方显示 SKU 值,但我想要这样
SKU:123sd - 产品名称
对于 Woocommerce 分组产品,我使用以下代码在购物车和结帐页面中显示父产品名称:
// Adding the grouped product ID custom hidden field data in Cart object
add_action( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {
if( ! empty( $_REQUEST['add-to-cart'] ) && $product_id != $_REQUEST['add-to-cart'] ) {
$cart_item_data['custom_data']['grouped_product_id'] = $_REQUEST['add-to-cart'];
$data['grouped_product_id'] = $_REQUEST['add-to-cart'];
// below statement make sure every add to cart action as unique line item
$cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
WC()->session->set( 'custom_data', $data );
}
return $cart_item_data;
}
// Add the parent grouped product name to …Run Code Online (Sandbox Code Playgroud) 我正在尝试从“shop_order”上下文中删除管理菜单中的“woocommerce-order-downloads”div。我得到了一个很好的答案来识别上下文,并且能够使用以下代码删除“postcustom”div。请注意,我正在尝试通过添加一行来删除“woocommerce-order-downloads”来完成完全相同的操作。那块不工作。我尝试过“订单下载”、“下载”等。我还转到“设置”-->“帐户”--> 空白“下载”路线。这看起来很奇怪,但我相对较新。有什么想法如何删除这个讨厌的 div 吗?我还尝试删除 order_label div...如您所见:)
function remove_custom_field_meta_box()
{
remove_meta_box('postcustom', 'shop_order', 'normal', 90);
remove_meta_box('woocommerce-order-downloads', 'shop_order', 'normal', 90);
//remove_meta_box('woocommerce-order-label', 'shop_order', 'normal');
}
//Remove postcustom/downloads/shippinglabel meta boxes
add_action('admin_menu', 'remove_custom_field_meta_box');
Run Code Online (Sandbox Code Playgroud) 在 Woocommerce 中,我试图找出如何获取客户完成订单电子邮件模板中已完成订单的产品 ID ,并将其存储为 PHP 变量。这样我就可以将其插入到外部数据库中。
我已经尝试过了,$product->get_id();但它不起作用。
如何从电子邮件模板获取 WooCommerce 3+ 中的产品 ID?
在 Woocommerce 中,我使用以下 URL 的 GET 方法将产品添加到购物车:
http://example.com/cart/?add-to-cart=10
Run Code Online (Sandbox Code Playgroud)
现在我希望能够同时添加一些自定义数据作为产品注释,例如:
http://example.com/cart/?add-to-cart=10¬e=hinote
Run Code Online (Sandbox Code Playgroud)
然后将该“hinote”值保存为购物车商品数据。下订单后,我想将“hinote”保存在订单项数据中,并将其显示为自定义订单项数据。
那可能吗?
任何帮助表示赞赏。
我想在下订单并处于“暂停”状态时自动向订购的产品添加特定的属性值(之前设置)。
我销售独特的产品,并且我设置了“STOCK”属性和“Out Of Stock”(缺货)值。
当下订单并处于“暂停”状态时,我想自动更改订购产品的特色状态,并向其添加缺货属性值。
特色部分已完成并有效,但我不知道如何向产品添加特定的属性值。
这是我的代码:
add_action('woocommerce_order_status_on-hold', 'order_status_on_hold_update_products', 20, 2);
function order_status_on_hold_update_products( $order_id, $order ) {
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
$product->set_featured(true);
$product->set_attributes(???); // I don't know if and how set_attributes() should be used
$product->save();
}
Run Code Online (Sandbox Code Playgroud) 使用 Woocommerce,我希望使用woocommerce_localisation_address_formats钩子在管理订单编辑页面中查看用户元数据。
基于“管理仪表板上的 Woocommerce 编辑订单”答案代码,我对其进行了轻微更改,如下所示:
add_filter( 'woocommerce_localisation_address_formats', 'admin_localisation_address_formats', 50, 1 );
function admin_localisation_address_formats( $address_formats ){
if( is_admin() ){
$address_formats = array();
$countries = array('default', 'AU', 'AT', 'BE', 'CA', 'CH', 'CL', 'CN', 'CZ',
'DE', 'EE', 'FI', 'DK', 'FR', 'HK', 'HU', 'IN', 'IS', 'IT', 'JP', 'TW', 'LI',
'NL', 'NZ', 'NO', 'PL', 'PT', 'SK', 'SI', 'ES', 'SE', 'TR', 'US', 'VN' );
foreach( $countries as $country_code ) {
$address_formats[$country_code] = "{company}\n{name}\n{address_1} {address_2} {postcode}\n{city} {state}\n{country}\n{billing_nombrecontacto}";
}
}
return $address_formats; …Run Code Online (Sandbox Code Playgroud) 当“付款方式标题”为“Npay”时,我想确保取消按钮在 my-account> my-order 中不可见。
“Npay”是一个外部支付网关,不适用于商业。因此,取消付款只能在外部完成。
add_filter('woocommerce_my_account_my_orders_actions', 'remove_my_cancel_button', 10, 2);
function remove_my_cancel_button($actions, $order){
if ( $payment_method->has_title( 'Npay' ) ) {
unset($actions['cancel']);
return $actions;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在向 woocommerce 结帐页面添加强制送货电话
add_filter( 'woocommerce_checkout_fields', 'add_shipping_phone_to_checkout_page' );
function add_shipping_phone_to_checkout_page( $fields ) {
$fields['shipping']['shipping_phone'] = array(
'label' => 'Phone',
'required' => true,
'class' => array( 'form-row-wide' ),
'priority' => 25,
);
return $fields;
}
Run Code Online (Sandbox Code Playgroud)
然后在管理订单面板中显示它
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'shipping_phone_checkout_display_in_order_panel' );
function shipping_phone_checkout_display_in_order_panel( $order ){
echo '<p><b>Phone :</b> ' . get_post_meta( $order->get_id(), '_shipping_phone', true ) . '</p>';
}
Run Code Online (Sandbox Code Playgroud)
最后打印在电子邮件中
add_action('woocommerce_email_customer_details','shipping_phone_display_in_order_email', 25, 4 );
function shipping_phone_display_in_order_email( $order, $sent_to_admin, $plain_text, $email ) {
$output = '';
$shipping_phone = get_post_meta( $order->id, '_shipping_phone', true );
if ( …Run Code Online (Sandbox Code Playgroud)