Skip to content

Instantly share code, notes, and snippets.

@coulterpeterson
Last active October 30, 2023 21:04
Show Gist options
  • Save coulterpeterson/ea77557565f3e353d13c762bd1273066 to your computer and use it in GitHub Desktop.
Save coulterpeterson/ea77557565f3e353d13c762bd1273066 to your computer and use it in GitHub Desktop.
Batch Delete WooCommerce Memberships by ID (WooCommerce REST API in Python)
# Name: Delete Memberships by ID
# Description: A simple, command-line parameter driven script for deleting WooCommerce memberships by membership ID. Accepts a CSV input.
# Author: Coulter Peterson
# Author URL: https://coulterpeterson.com
# Dependencies to install via pip: requests, pandas
import os
import sys
import argparse
import requests
import pandas as pd
############
# Functions
############
def uniquify(path):
# Credit: https://stackoverflow.com/a/57896232
filename, extension = os.path.splitext(path)
counter = 1
while os.path.exists(path):
path = filename + " (" + str(counter) + ")" + extension
counter += 1
return path
############
# Execution
############
parser = argparse.ArgumentParser(
prog='Delete WooCommerce Memberships',
formatter_class=argparse.RawDescriptionHelpFormatter,
description='''Deletes WooCommerce memberships with a provided CSV file.
Example usage: `python .\delete_memberships_by_id.py delete_these.csv --membershipidcolheading "user_membership_id"
--url "https://localhost" -ck "YOUR_CLIENT_KEY" -cs "YOUR_SECRET_KEY"`''',
epilog='Submit a bug if you find any errors or have suggestions.')
parser.add_argument('filename') # positional argument
parser.add_argument('--membershipidcolheading', default="")
parser.add_argument('--url', default="localhost")
parser.add_argument('-ck', '--clientkey')
parser.add_argument('-cs', '--clientsecret')
args = parser.parse_args()
print(args.filename, args.membershipidcolheading, args.url, args.clientkey, args.clientsecret)
df = pd.read_csv(args.filename)
#print(df.to_string())
file1 = open(uniquify("log.txt"), "a") # append mode
for ind in df.index:
user_membership_id = df[args.membershipidcolheading][ind]
print('-------------------------')
print("Now Deleting User Membership ID: " + str(user_membership_id))
file1.write('-------------------------' + " \n")
file1.write("Now Deleting User Membership ID: " + str(user_membership_id) + " \n")
# Woo Memberships API Documentation: https://godaddy-wordpress.github.io/woocommerce-memberships-rest-api-docs/#the-membership-plan
url = args.url + "/wp-json/wc/v3/memberships/members/" + str(user_membership_id)
payload = {}
response = requests.request("DELETE", url, verify=False, auth=(args.clientkey, args.clientsecret), data=payload)
print(response.json())
file1.write(response.text + " \n")
file1.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment