有没有办法让 WooCommerce 在经过这么多时间后自动将自定义订单状态更改为不同的自定义订单状态?
基本上,我希望所有更改为订单状态“退款已提交”的订单在 30 天后自动更改为“退款已过期”。
我意识到这些不是正常的 WooCommerce 订单状态,我创建了自定义状态。因此,如果我不那么具体,可能更容易理解我想要什么......
我只是希望能够让更改为特定状态的订单在这么多天后自动更改为不同的状态。
我查看了整个互联网,并没有找到任何可以帮助我实现这一目标的东西。任何帮助将不胜感激。
在 WooCommerce 中,当我提交时,如何捕获在订单编辑管理页面中添加的自定义选择字段?
我在文件中添加了这个自定义选择字段class-wc-meta-box-order-data.php。我明白了:
但我不知道如何捕捉或拯救 $_POST['vendor']
我尝试添加$_POST['vendor']的wp-admin/post.php?但它不起作用。
这是我添加的代码:
<select class="wc-customer-search" id="customer_user" name="customer_user" data-placeholder="<?php esc_attr_e( 'Guest', 'woocommerce' ); ?>" data-allow_clear="true">
<option value="<?php echo esc_attr( $user_id ); ?>" selected="selected"><?php echo htmlspecialchars( $user_string ); ?></option>
</select>
<!--/email_off-->
</p>
<p> <label for="order_status">???? </label>
<select name="vendor">
<?php
global $wpdb;
$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );
for($i=1;$i<=$user_count;$i++){
$user_info = get_userdata($i);
if (implode(', ', $user_info->roles)=='vendor')
echo "<option value=".$user_info->user_login.">$user_info->user_login</option>";
}
?>
</select></p>
Run Code Online (Sandbox Code Playgroud)
如何获取提交的值以及如何保存它?
我正在 WooCommerce 中自定义订单电子邮件模板,并且需要在订单详细信息中将“发货”排在倒数第二,就在“总计”上方。
我知道这个循环在 woocommerce>templates>emails 的“email-order-details.php”页面的第 52 行,所以在我的孩子主题中设置它,但我不确定从那里去哪里。这是我正在尝试的:
if ( $totals = $order->get_order_item_totals() ) {
$i = 0;
foreach ( $totals as $total ) {
$i++;
if($total['label'] === "Shipping"){
//make second-last above total somehow
}
else{
?><tr>
<th class="td" scope="row" colspan="3" style="text-align:<?php echo $text_align; ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo $total['label']; ?></th>
<td class="td" style="text-align:left; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>" colspan="1"><?php echo $total['value']; …Run Code Online (Sandbox Code Playgroud) 我正在尝试添加一个$order = wc_create_order();由用户定义的产品价格。一个特定的产品被添加到订单中,它已经有一个默认价格,需要被用户输入的值覆盖。
我尝试使用woocommerce_before_calculate_totals函数但没有运气。我认为它不起作用,因为产品直接添加到订单中而没有添加到购物车中。
我也试过使用set_total( $value, $deprecated = '' ),比如
$order = wc_create_order();
$order->set_total($amount); //where the $amount is my custom price.
Run Code Online (Sandbox Code Playgroud)
但订单价值不会改变。有没有其他方法可以实现相同的目标?
我需要一个查询来返回所有订单已批准付款的用户。
我很难找到它在数据库中的存储位置。我只发现 post_status 'wc-complete',但我认为这不是正确的信息。
SELECT a.post_status, b.meta_value FROM wp_posts a, wp_postmeta b
WHERE a.ID = b.post_id
AND a.post_type = 'shop_order'
AND a.post_status = 'wc-completed'
Run Code Online (Sandbox Code Playgroud) 在 WwooCommerce 中,我试图将船舶添加到我的管理电子邮件中的不同地址信息。
如何检查是否选中了从结帐页面运送到不同地址的复选框?
我尝试使用:
$ship_to_different_address = get_option( 'woocommerce_ship_to_destination' ) === 'shipping' ? 1 : 0;
if($ship_to_different_address == 1):
//the additional email text here
endif;
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。有任何想法吗?
我正在为客户开发一些自定义 Woocommerce 功能。他们使用 BACS 支付网关来处理人工支付。
然而,网关目前为我们的需要过早地减少库存,即当订单为“暂停”时。我只想在订单标记为“处理中”或“完成”时减少库存(避免重复减少)。
我已经设法通过以下代码段防止库存在“暂停”期间自行减少:
function wcs_do_not_reduce_onhold_stock( $reduce_stock, $order ) {
if ( $order->has_status( 'on-hold' ) ) {
$reduce_stock = false;
}
return $reduce_stock;
}
add_filter( 'woocommerce_can_reduce_order_stock', 'wcs_do_not_reduce_onhold_stock', 10, 2 );
Run Code Online (Sandbox Code Playgroud)
我不太确定如何继续。虽然上述代码有效,但添加以下条件无效:
else if ( $order->has_status( 'processing' ) || $order->has_status( 'completed' ) ) {
$reduce_stock = true;
}
Run Code Online (Sandbox Code Playgroud)
简而言之,我希望库存根据以下库存状态发生变化:
任何帮助深表感谢!
在新的 woo 订单屏幕中,旧的颜色状态图标现在消失了,取而代之的是带有彩色背景的大状态按钮。
正在处理为绿色,已完成为蓝色,已取消为灰色等。
我在 woocommerce 订单中有一个自定义订单状态,称为:进行中。自定义订单状态似乎也只是默认的灰色背景。我想为我的自定义订单状态分配一个颜色背景。我试图找到一个代码片段来做到这一点,但没有运气。
我正在尝试获取 WooCommerce 订单的运输方式或运输成本 - 我正在编写一个自定义电子邮件模板,该模板因免费送货与付费送货而异。
我找到了一个名为 的函数get_total_shipping(),但现在已弃用,我找不到替代品 - 是否存在?
我注意到运费存储在_order_shipping我可以访问的隐藏元字段 ( ) 中,但我担心这可能会在未来的 WooCommerce 更新中中断。