Get Customer Last Order Date WooCommerce, Dynamic Tag Bricks Builder

if you want to get last order date for a user so you can create some conditions …etc this may help.

output format is this : 2025-02-21 17:27:46

This code registers a dynamic tag for bricks: {customer_last_order_date}


// {customer_last_order_date}
add_filter('bricks/dynamic_tags_list', 'register_customer_last_order_date_tag');
function register_customer_last_order_date_tag($tags) {
    $tags[] = [
        'name'  => 'customer_last_order_date',
        'label' => 'Customer Last Order Date',
        'group' => 'Custom Tags',
    ];
    return $tags;
}

// Render the custom dynamic tag for Customer Last Order Date
add_filter('bricks/dynamic_data/render_tag', 'render_customer_last_order_date_tag', 10, 3);
function render_customer_last_order_date_tag($tag, $post, $context = 'text') {
    if ($tag !== 'customer_last_order_date') {
        return $tag;
    }

    // Get the current user ID; if not logged in, return nothing
    $user_id = get_current_user_id();
    if (!$user_id) {
        return '';
    }

    // Retrieve the most recent order for the current user
    $args = [
        'customer_id' => $user_id,
        'limit'       => 1,
        'orderby'     => 'date',
        'order'       => 'DESC',
        'return'      => 'ids',
    ];
    $orders = wc_get_orders($args);

    if (!empty($orders)) {
        $order = wc_get_order($orders[0]);
        $date_created = $order->get_date_created();
        if ($date_created) {
            // Return the formatted date (adjust format as needed)
            return $date_created->date('Y-m-d H:i:s');
        }
    }
    // If no orders or no date exists, return an empty string
    return '';
}

// Replace the dynamic tag placeholder in the rendered content
add_filter('bricks/dynamic_data/render_content', 'render_customer_last_order_date_tag_in_content', 10, 3);
function render_customer_last_order_date_tag_in_content($content, $post, $context = 'text') {
    if (strpos($content, '{customer_last_order_date}') !== false) {
        $last_order_date = render_customer_last_order_date_tag('customer_last_order_date', $post, $context);
        $content = str_replace('{customer_last_order_date}', $last_order_date, $content);
    }
    return $content;
}