标签: orders

在 Woocommerce 我的帐户订单的新列中显示产品名称和数量

在 Woocommerce 中,我想向我的帐户订单列表添加一个新列,并显示订购产品的名称和数量。

例如,我有这样的代码,它添加了一个显示订单名称的新列:

function sv_wc_add_my_account_orders_column( $columns ) {
    $new_columns = array();

    foreach ( $columns as $key => $name ) {
        $new_columns[ $key ] = $name;

        if ( 'order-status' === $key ) {
            $new_columns['order-ship-to'] = __( 'Ship to', 'textdomain' );
        }
    }
    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );

function sv_wc_my_orders_ship_to_column( $order ) {
    $formatted_shipping = $order->get_name;

    echo ! empty( $formatted_shipping ) ? $formatted_shipping : '–';
}
add_action( 'woocommerce_my_account_my_orders_column_order-ship-to', 'sv_wc_my_orders_ship_to_column' );
Run Code Online (Sandbox Code Playgroud)

如何更改它以显示订购产品的名称和数量?

php wordpress product orders woocommerce

1
推荐指数
1
解决办法
4068
查看次数

Jackson 的 @JsonPropertyOrder 不适用于 @JsonUnwrapped

我有一个包含另一个对象属性的对象,如下所示:

import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

@JsonPropertyOrder({"fA1","b","fA2"})
@Data
public class A {
    private String fA1;
    private String fA2;

    @JsonUnwrapped
    private B b = new B();

    @Data
    class B {
        private String fB1;
        private String fB2;
    }

    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        A a = new A ();
        System.out.println(objectMapper.writeValueAsString(a));
    }

}
Run Code Online (Sandbox Code Playgroud)

我想要的是生成尊重这个顺序的json:

{
  "fA1":"",
  "fB1":"",
  "fA2":"",
  "fB2":""
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?

java json orders

1
推荐指数
1
解决办法
3832
查看次数

通过 WooCommerce WC_Order_Query 通过元数据获取订单

如何通过订单号(而不是 ID)获取 WooCommerce 订单?

我尝试将 wc_get_orders 与自定义参数一起使用,例如:

wc_get_orders( array( 'number' => '1000' ) );
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

谢谢!

php wordpress orders query-variables woocommerce

1
推荐指数
1
解决办法
5867
查看次数

如何更改 WooCommerce“我的帐户”订单表中的列标题

如何更改 WooCommerce 中最近订单表中的列标题文本?

见附图

在此输入图像描述

我的主题中的模板文件myaccount/my-orders.php包含:

<?php
/**
 * My Orders - Deprecated
 *
 * @deprecated 2.6.0 this template file is no longer used. My Account shortcode uses orders.php.
 * @package WooCommerce\Templates
 */

defined( 'ABSPATH' ) || exit;

$my_orders_columns = apply_filters(
    'woocommerce_my_account_my_orders_columns',
    array(
        'order-number'  => esc_html__( 'Order', 'woocommerce' ),
        'order-date'    => esc_html__( 'Date', 'woocommerce' ),
        'order-status'  => esc_html__( 'Status', 'woocommerce' ),
        'order-total'   => esc_html__( 'Total', 'woocommerce' ),
        'order-actions' => '&nbsp;',
    )
);

$customer_orders = get_posts(
    apply_filters(
        'woocommerce_my_account_my_orders_query',
        array(
            'numberposts' …
Run Code Online (Sandbox Code Playgroud)

php wordpress orders woocommerce

1
推荐指数
1
解决办法
2361
查看次数

防止 WooCommerce 订单状态从特定状态更改/更改为特定状态

您好,我正在尝试在 mu 插件中创建一个功能,以防止某些用户将订单状态从特定订单状态更改为特定订单状态。

我到处寻找,尝试了很多不同的方法,但似乎没有任何效果。

实际上该函数是使用woocommerce_order_status_changed动作钩子运行的。问题是这个钩子在订单状态已经改变之后运行,这导致了无限循环。

我发现的最有用的钩子似乎是woocommerce_before_order_object_save.

我在 WooCommerce Github 上发现了“添加附加参数以防止调用‘woocommerce_order_status_changed’”有用的相关线程。
我尝试使用@kloon代码片段解决方案

add_filter( 'woocommerce_before_order_object_save', 'prevent_order_status_change', 10, 2 );
function prevent_order_status_change( $order, $data_store ) {
    $changes = $order->get_changes();
    if ( isset( $changes['status'] ) ) {
        $data = $order->get_data();
        $from_status = $data['status'];
        $to_status = $changes['status'];

        // Do your logic here and update statuses with CRUD eg $order->set_status( 'completed' );
                // Be sure to return the order object

    }
    return $order;
}
Run Code Online (Sandbox Code Playgroud)

$changes变量始终是一个空数组。

我尝试使用 …

php wordpress orders woocommerce hook-woocommerce

1
推荐指数
1
解决办法
1720
查看次数

Magento订单的折扣信息

我需要促销/优惠券按顺序改变哪个项目的信息以及折扣前这个项目的价格和这个项目的最终价格.我知道,这很复杂所以这是一个例子:

<order>
<items>
<item> <!-- This item have discount in order -->
<sku>1234</sku>
<promotion>
<promo_id>456</promo_id>
<discount_value>10</discount_value><!-- In % or $ -->
</promotion>
<final_price>25</final_price>
</item>
<item><!-- This item don't have discount in order -->
<sku>1234</sku>
<promotion/>
<final_price>35</final_price>
</item>
</items>
</order>
Run Code Online (Sandbox Code Playgroud)

我希望这是可以理解的解释.谢谢你的帮助.

编辑:我忘了一件事.所有我都有来自销售/订单模型的信息.这是一个接口,所以我无法访问会话数据,我从数据库获得验证的订单.

magento discount orders

0
推荐指数
1
解决办法
3364
查看次数

在 Woocommerce 中以编程方式发送重置密码电子邮件通知

我想在我的 woocommerce 网站上首次订购后向自动注册的客人发送重置密码的电子邮件。

这是我的钩子函数:

function wc_register_guests($order_id) {
    // get all the order data
    $order = new WC_Order($order_id);

    //get the user email from the order
    $order_email = $order->billing_email;

    // check if there are any users with the billing email as user or email
    $email = email_exists($order_email);
    $user = username_exists($order_email);

    // if the UID is null, then it's a guest checkout
    if ($user == false && $email == false) {

        $random_password = wp_generate_password();

        // create new user with email as username & …
Run Code Online (Sandbox Code Playgroud)

php wordpress orders email-notifications woocommerce

0
推荐指数
1
解决办法
2924
查看次数

Woocommerce-获取结账时自定义字段的值

我有一个灵活的问题,但没有得到任何答案。我在 Woocommerce 结帐字段中使用“结帐字段编辑器”添加了自定义字段。该字段如下所示,似乎工作正常。

 <input class="input-text " name="wc_order_field_7542" id="wc_order_field_7542" placeholder="Pickup Date" value="" type="text">
Run Code Online (Sandbox Code Playgroud)

然而,现在我正在开发一个插件,想要获取在这个特定字段中输入的值,但似乎无法弄清楚。对于其他字段,我只需执行以下操作,就像我为“计费电子邮件”所做的那样,并且它正在工作:

public function get_billing_email() {
        $billing_email = $this->order->billing_email;
        return apply_filters( 'xc_woo_cloud_print_billing_email', $billing_email, $this );
    }
public function billing_email() {
    echo $this->get_billing_email();
}
Run Code Online (Sandbox Code Playgroud)

我确信我忘记了一些事情并且没有做正确的事情。

任何帮助表示赞赏。

php wordpress checkout orders woocommerce

0
推荐指数
1
解决办法
1万
查看次数

Woocommerce循环中每个订单商品的总数

嗨,我正在学习PHP和Woocommerce!我正在尝试获取所有具有状态处理的订单和每个订单的总数,并在页面上显示.

到目前为止,我可以遍历所有订单并获取每个订单的名称和数量.

但由于我不知道列表中的哪个产品,我不确定如何比较名称然后添加数量.

我目前的输出是这样的:

  • prod1 - v1 x 1

  • Prod2 - v3 x 1

  • prod2 - v3 x 1

  • prod3 - v2 x 11

  • prod3 - v2 x 1

我想要的是:

  • prod1 - v1 x 1

  • Prod2 - v3 x 2

  • prod3 - v2 x 12

目前的代码是:

    <?php
/*
Template Name: Print Supplier Order
*/
if (!is_user_logged_in() || !current_user_can('manage_options')) wp_die('This page is private.');
?>
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title><?php _e('Processing Orders'); ?></title>
    <style>
        body { background:white; …
Run Code Online (Sandbox Code Playgroud)

php sql wordpress orders woocommerce

0
推荐指数
2
解决办法
1162
查看次数

在Woocommerce中添加自定义订单状态“已发货”

我正在使用Woocommerce开发一个电子商务网站,我希望将定制状态设置为“已发货”。

因此,流程是这样的:客户下订单收到一封电子邮件,指出订单已确认,当前状态为处理中,管理员从其快递员那里获取跟踪ID,可以将其粘贴到新部分并将订单状态更改为已发货。这会向客户发送另一封带有跟踪ID的电子邮件。

是否有任何自定义代码可以帮助我实现此功能?

任何帮助将不胜感激。

php wordpress status orders woocommerce

0
推荐指数
1
解决办法
2496
查看次数

在Woocommerce Thankyou页面上添加产品缩略图

在woocommerce中,在“收到订单”页面(“谢谢”页面)上,产品图像未显示在订单项中。

如何在“已收到订单”页面上的订单项中显示产品图片?
是否有可用的挂钩?
还是我必须覆盖模板order/order-details-item.php文件?

任何帮助表示赞赏。

php wordpress image orders woocommerce

0
推荐指数
1
解决办法
542
查看次数

挂钩 woocommerce_checkout_order_processed 订单项目问题

我正在开发 WooCommerce 项目。我需要根据自定义表中的订购项目添加一些条目。如果用户订购了 3 个商品,那么这 3 个条目将与我的自定义表中的一些数据一起放置。

为此我使用了woocommerce_checkout_order_processed钩子。但我遇到了一些问题,如果用户在购物车和结账页面添加 4 件商品,如果用户删除了除一件商品之外的所有商品,最后只订购了 1 件商品,那么在这个钩子中我也得到了所有 4 件商品。我没有在这个钩子中得到最终订购的物品。

所以我把钩子改成了woocommerce_thankyou. 但在某些情况下,由于某种原因,用户没有进入感谢页面或某些信用卡付款,此挂钩不起作用

那么谁能告诉我最好的钩子,它可以在订单下达后运行,无论付款是否完成,而且我应该只得到订购的物品。我的 WooCommerce 版本是 3+

代码 :

function wc_function($order_id) {
    global $wpdb;
    $order = new WC_Order($order_id);
    $items = $order->get_items();
    foreach ($items as $item_line_id => $item) {
        // Insert data in my custom table
    }
}
//add_action('woocommerce_checkout_order_processed','wc_function', 10, 3);
//add_action('woocommerce_thankyou', 'wc_function', 10, 1);
Run Code Online (Sandbox Code Playgroud)

谢谢 !

php wordpress orders woocommerce hook-woocommerce

0
推荐指数
1
解决办法
2606
查看次数

如何使用woocommerce中的订单项目ID获取产品ID

我已经使用此文档以编程方式创建了优惠券 -> https://docs.woocommerce.com/document/create-a-coupon-programatically/

效果很好,完成订单后生成一个动态优惠券代码。但我想只允许该订购产品的优惠券代码。

所以在上面的代码这里:

update_post_meta( $new_coupon_id, 'product_ids', '' );

我想使用该订单商品 ID 获取该订单产品 ID。

所以任何人都知道解决方案,然后请帮助我。

谢谢,凯坦。

wordpress product orders coupon woocommerce

-1
推荐指数
1
解决办法
4605
查看次数