SaaS Builder - Code snippets
Retrouvez des fonctions et codes prêts à l'emploi
Table des matières
Ajouter des limites seulement sur le générateur d'image
function limite_generateur_image() {
// Vérifier si l'utilisateur actuel est un administrateur
if (current_user_can('administrator')) {
return ''; // Ne rien retourner pour les administrateurs
}
if (get_current_user_id() == 7193) {
return ''; // Ne rien retourner pour l'utilisateur avec ID 7193
}
// Votre script JavaScript
$script = <<
jQuery(document).ready(function($) {
// Fonctions de gestion des cookies
function setCookie(name, value, hours) {
var expires = "";
if (hours) {
var date = new Date();
date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function isLimitReached() {
var clicks = getCookie('clicks') || 0;
var firstUse = getCookie('firstUse');
var now = new Date().getTime();
if (!firstUse || now - firstUse > 5 * 60 * 60 * 1000) { // Pas de première utilisation ou 5 heures passées
return false; // La limite n'est pas encore atteinte
} else if (clicks >= 10) {
return true; // La limite est atteinte
}
return false;
}
function updateButtonVisibility() {
var clicks = getCookie('clicks') || 0;
var firstUse = getCookie('firstUse');
var now = new Date().getTime();
if (!firstUse) {
setCookie('firstUse', now, 5);
$('.btn-gene-image').show();
} else if (now - firstUse > 5 * 60 * 60 * 1000) { // 5 heures
setCookie('clicks', 0, 5);
setCookie('firstUse', now, 5);
$('.btn-gene-image').show();
} else if (clicks >= 10) {
$('.btn-gene-image').hide();
$('#generateurenpause').show();
return;
} else {
$('.btn-gene-image').show();
$('#generateurenpause').hide();
}
}
function toggleButton(isInputEmpty) {
if (isInputEmpty) {
$('.mwai-form-submit button').fadeOut(200); // Durée de 200 ms
} else {
$('.mwai-form-submit button').fadeIn(200); // Durée de 200 ms
}
}
// Cacher le bouton au départ
$('.mwai-form-submit button').hide();
// Vérifier à chaque saisie dans l'input
$('.mwai-form-field-container input').on('input', function() {
toggleButton($(this).val() === '');
if (isLimitReached()) {
showMessage("Mise à jour du générateur en cours", false);
}
});
// Gérer le clic sur le bouton actif
$('.btn-gene-image').click(function(e) {
var clicks = getCookie('clicks') || 0;
if (clicks < 10) {
setCookie('clicks', parseInt(clicks) + 1, 5);
} else {
e.preventDefault(); // Empêcher l'action par défaut
showMessage("Mise à jour du générateur en cours", false); // Afficher le message de limite
}
updateButtonVisibility();
});
// Vérifier et mettre à jour la visibilité du bouton au chargement de la page
updateButtonVisibility();
});
EOD;
return $script;
}
// Ajouter le shortcode à WordPress
add_shortcode('limite_generateur_image', 'limite_generateur_image');
Changement message d'erreur Open AI
add_filter( 'mwai_ai_exception', function ( $exception ) {
try {
// Vérifie si le message d'erreur contient "Your request was rejected as a result of our safety system"
if (strpos($exception, "Your request was rejected as a result of our safety system") !== false) {
error_log($exception);
// Utilisation de la fonction __() pour la traduction
return __("Votre requête est incorrecte, je ne peux pas générer cela !", "light");
}
// Vérifie si le message d'erreur contient "The size is not supported by this model"
if (strpos($exception, "The size is not supported by this model") !== false) {
error_log($exception);
// Utilisation de la fonction __() pour la traduction
return __("Maintenance de la version V1 en cours.", "light");
}
// Vérifie si le message d'erreur contient "The size is not supported by this model"
if (strpos($exception, "unsupported image") !== false) {
error_log($exception);
// Utilisation de la fonction __() pour la traduction
return __("Image invalide. Veuillez vous assurer que l'image est un fichier .png, .jpeg, .gif ou .webp et qu'elle fait moins de 20Mb.", "light");
}
return $exception;
}
catch (Exception $e) {
error_log($e->getMessage());
// Utilisation de la fonction __() pour la traduction
return __("Une erreur inattendue est survenue.", "light");
}
});
Gestion des crédits dynamiques
add_filter('mwai_stats_credits', function($credits, $userId) {
$user = get_userdata($userId);
$user_id = $user->ID;
$product_id = 1368; // Remplacez par votre ID de produit
// Si l'utilisateur a annulé son abonnement
if (wcs_user_has_subscription($user_id, $product_id, 'pending-cancel')) {
// Récupère les commandes en cours de l'utilisateur
$orders = wc_get_orders(array(
'customer_id' => $user_id,
'status' => 'processing', // ou tout autre statut de commande pertinent
));
// Vérifie si l'utilisateur a plus de deux commandes en cours
if (count($orders) >= 2) {
// Appliquez la logique souhaitée ici
// Par exemple, retourner un crédit spécifique
return 123456; // Exemple de valeur de crédit
}
}
// Nouvelle vérification pour la licence active ou en période d'essai LemonSqueezy
$licenceDetails = verifier_licence_utilisateur_actif();
if ($licenceDetails['status'] === 'active' || $licenceDetails['status'] === 'on_trial') {
// Attribuez ici le nombre de crédits pour une licence active ou en période d'essai
return 5000000; // Exemple de valeur de crédit pour une licence active ou en période d'essai
}
// Le reste de votre code...
if (!empty($user->roles) && is_array($user->roles)) {
foreach ($user->roles as $role) {
// Si l'utilisateur est un administrateur
if ($role === 'administrator') {
return 10000;
}
// Remplacé par la vérification de l'abonnement actif
if (wcs_user_has_subscription($user_id, $product_id, 'active')) {
return 99999999; // Retourne une valeur de crédit si l'utilisateur a un abonnement actif
}
}
}
return $credits;
}, 10, 2);
Chatbot simple (polyvalent)
//* CHATBOT - DISCUSSION LIBRE POLYVALENT CHAT GPT MODE __-----_____----__-----_____----__-----_____----__-----_____----__-----_____----__-----_____----__-----_____----__-----_____----
function chatbot_custom_gpt() {
$current_user = wp_get_current_user();
$urlavatar = "https://4creators.ai/wp-content/uploads/2023/01/favicon.png";
$contexte_polyvalent = get_field('contexte_polyvalent', 'user_' . $current_user->ID);
$contexte_polyvalent = str_replace('"', '-', $contexte_polyvalent);
$contexte_polyvalent = str_replace("\r", '', $contexte_polyvalent);
?>
[mwai_chatbot_v2 custom_id="poly"
context="Répond et formate tes réponse en HTML . Si on te demande quelque chose sur la plateforme 4Creators AI, répond que tu n'es pas fait pour ça. S'il te manque des informations, dis-le"
model="gpt-3-turbo" image_upload="1"
user_name="user_login;?>"
sys_name="4Creators AI"
start_sentence="Bonjour et bienvenue user_login;?> !
Je suis votre assistant personnel polyvalent.
Que ce soit pour dénicher la recette parfaite, résoudre des calculs complexes, effectuer des recherches approfondies ou vous fournir les dernières informations, je suis là pour faciliter votre quotidien.
Comment puis-je vous aider aujourd'hui ?"
text_send="Envoyer" text_clear="Recommencer"
text_input_placeholder="Écris un message, enregistre un message vocal ou envoi une photo pour commencer"
ai_name="" ]