Plugin Woocommerce

Mon plugin Woocommerce.
Il permet de scanner des sites (avec Beautifulsoup), détruire tous les articles d’une catégorie et ajouter tout les articles produits lus sur le site.

<?php
/*
Plugin Name: myapiplugin
Plugin URI: http://localhost:8888/abc.fr

Description: API REST WP en Local
Version: 0.1
Author: JB
Author URI: http://localhost:8888/abc.fr.fr
License: GPLv2
*/


add_action( 'rest_api_init', 'myapiplugin_registered_routes' );
function myapiplugin_registered_routes() {
	register_rest_route( 'myapiplugin/v2', 'greeting/(?P<id>\d+)/(?P<categorie>\d+)', array(
		'methods'             => WP_REST_Server::READABLE,
		'callback'            => 'myapiplugin_serve_route',
		'permission_callback' => 'myapiplugin_permission_callback'	
	) );
}
function myapiplugin_permission_callback() {
	return current_user_can( 'update_core' );
}

function myapiplugin_suppression_enregistrement($categorie ) {
	// en paramètre l'id de la categorie
	// on modifie successivement les tables suivantes : 
	// wp_postmeta, wp_posts, wp_term_taxonomy
	
	global $wpdb;
	
	// wp_postmeta
	$id_a_virer = "SELECT ID FROM wp_posts WHERE post_type ='product' AND post_status = 'publish' AND ID IN (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ($categorie) AND (term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy='product_cat')))";
	$requete_wp_postmeta = "DELETE FROM wp_postmeta WHERE post_id IN (".$id_a_virer.")";
	$result = $wpdb->get_results($requete_wp_postmeta, OBJECT);
	
	
	// wp_posts
	$requete_wp_posts = "DELETE FROM wp_posts WHERE post_type ='product' AND post_status = 'publish' AND ID IN (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ($categorie) AND (term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy='product_cat')))";
	$result = $wpdb->get_results($requete_wp_posts, OBJECT);
	
	// wp_term_taxonomy
	$requete_wp_term_taxonomy = "UPDATE wp_term_taxonomy SET count=0 WHERE term_id = $categorie"; 
	$result = $wpdb->get_results($requete_wp_term_taxonomy, OBJECT);
	
	return $result;
	
}


function myapiplugin_serve_route( WP_REST_Request $request ) {
	global $wpdb;

	$id = $request['id'];	
	$users=$wpdb->get_results("SELECT * FROM wp_users");
	
	$querystr = "SELECT * FROM wp_posts WHERE ID = $id";
 	$pageposts = $wpdb->get_results($querystr, OBJECT);
 
 	$categorie = $request['categorie'];	
 	$result = myapiplugin_suppression_enregistrement($categorie) ;
					
	$response = array( 
		'greeting' => 'Local!', 
		'message' => 'You have successfully called my custom endpoint.',
		'id' => $id,
		'categorie' => $categorie,
		'result' => $result
		
	);
	return $response;
}
?>

Et mon code Python (tout n’est pas compréhensible, mais disons que je mets à jour un site local et un site distant)

# -*- coding: utf-8 -*-
import requests
import re
from bs4 import BeautifulSoup
from datetime import date, datetime, timedelta
import mysql.connector
from requests_oauthlib import OAuth1

#Ici des codes perses qui n'ont pas à être détaillés car ils n'ajoutent rien à la compréhension
from touslessites import *
from check_cms import *
from mot_get_links import *

# ----------------------------------------------------------------------------------------------------
# CHERCHE TOUS LES PRODUITS D'UNE MARQUE, LES DETRUIT - ET RESCANNE LA MARQUE
# ----------------------------------------------------------------------------------------------------


		
# ---------------------------------------------------------------------------------------------------
#TRAITEMENT DES PRODUITS D'UNE CATEGORIE
def suppression_produits_categorie(nom_de_la_marque, numero_serveur):

	#Recherche de l'identifant de la categorie
	site=nom_de_la_marque
	site_etudie = Site()
	site_etudie.creation(site)
	categorie_du_produit = site_etudie.categorie

	try:
		if numero_serveur==1:
			#local
			oauth_consumer_key = 'cL9xxxCTc'
			oauth_consumer_secret = 'PowxxxSnw'
			oauth_token = 'WuLxxxMhG'
			oauth_token_secret = 'dqgxxxRDg'

			url = 'http://localhost:8888/abc.fr/wp-json/myapiplugin/v2/greeting/'

		else:
			#remote
			oauth_consumer_key = '47yxxxgpj'
			oauth_consumer_secret = 'ycqxxxXWw'
			oauth_token = 'Q1Zxxx5Wu'
			oauth_token_secret = 'gOZxxx54T'
			url = 'http://mon-site-distant.com/wp-json/myapiplugin/v2/greeting/'
			

	except:
		print "Echec de Init de la BDD "
		return False
	

	url=url+"100769/"+categorie_du_produit
	
	auth = OAuth1(oauth_consumer_key, oauth_consumer_secret,oauth_token, oauth_token_secret)
	response = requests.get(url, auth=auth)
	print(response.text)
	return response


# --------------------------------------------------------------------------------------------------
#SUPPRESSION ET AJOUT
def suppression_et_ajout_produits_categorie(nom_de_la_marque):
	print "Traitement de ", nom_de_la_marque

	try:
		print "en local : "
		suppression_produits_categorie(nom_de_la_marque, 1)
	except:
		print "Echec de suppression_produits_categorie local"
	
	try:
		print "en remote : "
		suppression_produits_categorie(nom_de_la_marque, 2)
	except:
		print "Echec de suppression_produits_categorie remote"
		
		
	print "getLinksInit", nom_de_la_marque
	getLinksInit(nom_de_la_marque)


i=0
longueur_cat = len(liste_categories_0)
print "Longueur de la liste", longueur_cat

while i < longueur_cat:
	suppression_et_ajout_produits_categorie(liste_categories_0[i])
	i = i +1
		

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *