Last active
October 30, 2023 21:04
-
-
Save coulterpeterson/ea77557565f3e353d13c762bd1273066 to your computer and use it in GitHub Desktop.
Batch Delete WooCommerce Memberships by ID (WooCommerce REST API in Python)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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