WooCommerce Otomatik Lisans Teslimat Eklentisi

Digital ürünler satan bir e-ticaret mağazası yönetiyorsanız, lisans anahtarları ve dijital ürünlerin teslimatını manuel olarak yapmak zaman alıcı ve hataya açıktır. WooCommerce için geliştirilmiş otomatik lisans teslimat eklentisi, dijital ürünlerinizi güvenli ve hızlı bir şekilde müşterilerinize ulaştırmanıza olanak tanır. Bu eklenti sayesinde, ödeme onaylandığında otomatik olarak lisans anahtarları veya ürün dosyaları müşterilere gönderilir, böylece hem satış sürecinizi hızlandırır hem de kullanıcı deneyimini geliştirirsiniz. Kolay kurulum ve özelleştirme seçenekleriyle, WooCommerce mağazanızda sorunsuz bir teslimat sistemi oluşturabilirsiniz.

Woocommerce için lisans teslimat eklentisi geliştirebilmek için, aşağıda verdiğim adımları takip edebilirsiniz. Bu eklenti, ürün ekleme alanında lisans anahtarlarını eklemeyi, siparişlerde otomatik olarak stoktan düşmeyi ve sipariş tamamlandığında e-posta ile lisans anahtarını göndermeyi sağlar.

Aşağıda, gerekli işlevselliği sağlamak için yazmanız gereken temel PHP kodu örneği bulunmaktadır:

Adım 1: Eklenti Dosyasını Oluşturun

Öncelikle, bir eklenti dosyası oluşturun ve aşağıdaki temel yapıyı izleyin.

wp-content/plugins/woocommerce-license-delivery/woocommerce-license-delivery.php

Açıklamalar:

  1. Lisans Anahtarları Eklemek: wcld_add_license_key_and_description_field() fonksiyonu, WooCommerce ürün ekleme sayfasına bir metin alanı ve birden fazla lisans alanı ekler, bu alana anahtar yazılacak.
  2. Lisans Anahtarlarını Kaydetmek: wcld_save_license_keys() fonksiyonu, ürün kaydedildiğinde girilen lisans anahtarlarını veritabanına kaydeder.
  3. Sipariş Tamamlandığında Lisans Göndermek: wcld_send_license_keys_and_description_on_order_complete() fonksiyonu, sipariş tamamlandığında müşteri e-posta adresine bir lisans anahtarı gönderir. İlk lisans anahtarını alır ve kalanlarını veritabanından çıkarır.
  4. Stoktan Düşme: wcld_decrease_license_stock() fonksiyonu, her sipariş tamamlandığında ilgili ürünün lisans anahtarlarını stoktan düşer.

Adım 2: Eklentiyi Etkinleştirme

Bu dosyayı bir .zip dosyasına çevirip, WordPress admin panelinde “Eklentiler” bölümünden yükleyebilirsiniz. Daha sonra eklentiyi etkinleştirmeniz yeterli olacaktır.

Notlar:

  • Bu örnek, basit bir lisans anahtarı teslimat sürecini gösteriyor. Gerçek dünya senaryolarında daha karmaşık bir sistem, örneğin lisans anahtarlarının güvenli bir şekilde oluşturulması ve yönetilmesi gerekebilir.
  • Sipariş sırasında her ürün için yalnızca bir lisans anahtarı kullanıldığını varsaydım. Eğer birden fazla lisans anahtarı kullanılacaksa, lisansların yönetimi için daha fazla geliştirme yapmanız gerekebilir.

KOD:

<?php
/*
Plugin Name: WooCommerce License Delivery
Description: WooCommerce için lisans anahtarı teslimat eklentisi.
Version: 1.4
Author: [Adınız]
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Direct access not allowed.
define('WCLD_PLUGIN_URL', plugin_dir_url(__FILE__));
define('WCLD_PLUGIN_PATH', plugin_dir_path(__FILE__));
// Eklentiyi etkinleştir
function wcld_activate_plugin() {
// Eklenti etkinleştirildiğinde yapılacak işlemler
}
register_activation_hook( __FILE__, 'wcld_activate_plugin' );
// Lisans alanını ve açıklama alanını ürün ekleme sayfasına ekleyin
function wcld_add_license_key_and_description_field() {
global $post;
// Mevcut lisans anahtarlarını al
$license_keys = get_post_meta( $post->ID, '_license_keys', true );
$license_keys_array = $license_keys ? explode(',', $license_keys) : array();
// Mevcut açıklamayı al
$license_description = get_post_meta( $post->ID, '_license_description', true );
?>
<div class="options_group">
<p class="form-field">
<label for="license_description"><?php _e( 'Lisans Açıklaması', 'woocommerce' ); ?></label>
<textarea name="license_description" id="license_description" class="short"><?php echo esc_textarea($license_description); ?></textarea>
</p>
<p class="form-field">
<label for="license_keys"><?php _e( 'Lisans Anahtarları', 'woocommerce' ); ?></label>
<button type="button" class="button" id="add-license-key"><?php _e( 'Key Ekle', 'woocommerce' ); ?></button>
<div id="license-keys-container">
<?php foreach ($license_keys_array as $key): ?>
<input type="text" name="license_keys[]" value="<?php echo esc_attr($key); ?>" class="license-key-field" />
<?php endforeach; ?>
</div>
</p>
</div>
<script type="text/javascript">
jQuery(document).ready(function($){
// Yeni lisans anahtarı alanı ekle
$('#add-license-key').on('click', function(){
var newField = '<p><input type="text" name="license_keys[]" class="license-key-field" /></p>';
$('#license-keys-container').append(newField);
});
});
</script>
<?php
}
add_action( 'woocommerce_product_options_general_product_data', 'wcld_add_license_key_and_description_field' );
// Lisans anahtarları ve açıklamayı kaydetme
function wcld_save_license_keys_and_description( $post_id ) {
if ( isset( $_POST['license_keys'] ) ) {
$license_keys = array_map('sanitize_text_field', $_POST['license_keys']);
$license_keys_string = implode(',', $license_keys);
update_post_meta( $post_id, '_license_keys', $license_keys_string );
}
if ( isset( $_POST['license_description'] ) ) {
$license_description = sanitize_textarea_field( $_POST['license_description'] );
update_post_meta( $post_id, '_license_description', $license_description );
}
}
add_action( 'woocommerce_process_product_meta', 'wcld_save_license_keys_and_description' );
// Sipariş tamamlandığında lisans anahtarları ve açıklamayı göndermek
function wcld_send_license_keys_and_description_on_order_complete( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
// Lisans anahtarlarını al
$license_keys = get_post_meta( $product->get_id(), '_license_keys', true );
// Lisans açıklamasını al
$license_description = get_post_meta( $product->get_id(), '_license_description', true );
if ( ! empty( $license_keys ) ) {
// Virgülle ayır
$license_keys_array = explode(',', $license_keys);
// Her anahtarı sırayla gönder
$sent_keys = get_post_meta( $product->get_id(), '_sent_license_keys', true );
if ( ! is_array( $sent_keys ) ) {
$sent_keys = array();
}
// Gönderilmemiş lisans anahtarlarını sırayla gönder
$license_key = null;
foreach ( $license_keys_array as $key ) {
if ( ! in_array( $key, $sent_keys ) ) {
$license_key = $key;
break;
}
}
if ( $license_key ) {
// E-posta ile lisans anahtarını gönder
$to = $order->get_billing_email();
$subject = 'Siparişiniz için Lisans Anahtarınız';
$message = 'Siparişinizle birlikte aldığınız lisans anahtarı: ' . trim($license_key);
// Lisans açıklamasını ekle
if ( ! empty( $license_description ) ) {
$message .= "\n\n" . 'Lisansın nasıl kullanılacağına dair açıklama: ' . esc_html( $license_description );
}
wp_mail( $to, $subject, $message );
// Gönderilen anahtarları güncelle
$sent_keys[] = $license_key;
update_post_meta( $product->get_id(), '_sent_license_keys', $sent_keys );
}
}
}
}
add_action( 'woocommerce_order_status_completed', 'wcld_send_license_keys_and_description_on_order_complete' );
// Sipariş sırasında stoktan düşme
function wcld_decrease_license_stock( $order_id ) {
$order = wc_get_order( $order_id );
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
// Lisans anahtarlarını al
$license_keys = get_post_meta( $product->get_id(), '_license_keys', true );
if ( ! empty( $license_keys ) ) {
// Virgülle ayır ve sırayla çıkar
$license_keys_array = explode(',', $license_keys);
// Gönderilmemiş lisans anahtarlarını bul ve çıkar
$sent_keys = get_post_meta( $product->get_id(), '_sent_license_keys', true );
if ( ! is_array( $sent_keys ) ) {
$sent_keys = array();
}
foreach ( $sent_keys as $sent_key ) {
if ( ($key_index = array_search($sent_key, $license_keys_array)) !== false ) {
unset($license_keys_array[$key_index]);
}
}
// Güncellenmiş lisansları kaydet
update_post_meta( $product->get_id(), '_license_keys', implode(',', $license_keys_array) );
}
}
}
add_action( 'woocommerce_order_status_completed', 'wcld_decrease_license_stock' );

Not: Sorun yaşamamak için WooCommerce ve temanızın güncel olduğundan emin olun.

Yorum Bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir