WooCommerce Eklentisi Özelleştirme Geliştirme Kılavuzu: Kendi Özel Çevrimiçi Mağazanızı Oluşturun

4 dakika okuma.
2026-03-20
2026-06-04
2,749
Aşağıdaki bağlantılar üzerinden alışveriş yaptığınızda, sizin için ek bir maliyet olmadan komisyon kazanıyorum.

Günümüzün rekabetçi e-ticaret ortamında, standart bir WooCommerce mağazası genellikle tüm iş ihtiyaçlarını karşılamakta yetersiz kalır. İster özelleştirilmiş ödeme süreçleri, ister özel kargo hesaplama kuralları, isterse üçüncü parti sistemlerle derin entegrasyonlar olsun; mağazanın temel işlevlerinin genişletilmesi gerekmektedir. İşte bu noktada özel eklentilerin geliştirilmesinin değeri ortaya çıkar. Kendi eklentilerinizi yazarak… WooCommerce Eklentiler sayesinde tam kontrol sahibi olabilir, benzersiz bir alışveriş deneyimi yaratabilir ve kopyalanması zor ticari engeller oluşturabilirsiniz.

WooCommerce Eklenti Geliştirme Ortamı Ayarları

Herhangi bir geliştirme işlemine başlamadan önce, stabil ve izole bir yerel geliştirme ortamı şarttır. Bu, sadece çevrimiçi verilerinizi korumakla kalmaz, aynı zamanda hata ayıklama ve test işlemlerini de kolaylaştırır.

Yerel bir WordPress ortamı kurmak

Yerel bir ortam kurmak için Local by Flywheel, XAMPP veya MAMP gibi araçların kullanılmasını öneririz. Ortamınızın gereken şartları karşıladığından emin olun. WooCommerce En düşük gereksinimler: PHP 7.2 veya daha yüksek bir sürüm, MySQL 5.6 veya daha yüksek bir sürüm ve en yeni sürümdeki WordPress. WordPress’i kurduktan sonra, resmi eklentiler kataloğundan uygun eklentiyi indirip etkinleştirin. WooCommerce Eklentileri kullanmak ve başlangıç ayarlarını tamamlamak için rehberi takip etmek, örnek verileri içe aktarmak geliştirme sürecine büyük fayda sağlayacaktır.

Tavsiye edilen okuma WooCommerce E-Ticaret Sitesi Geliştirme ve Performans Optimizasyonu Kılavuzu

Bir eklentinin temel yapısını oluşturma

Bir tane. WooCommerce Bu eklenti, öncelikle standart bir WordPress eklentisidir. wp-content/plugins/ Katalogda yeni bir klasör oluşturun, örneğin… my-custom-woocommerceBu klasörde, genellikle eklentinin adıyla adlandırılan ana eklenti dosyasını oluşturun. my-custom-woocommerce.php

UltaHost WordPress Sunucusu
30 gün iade garantisi, sınırsız bant genişliği ve veritabanı kullanımı, ücretsiz DDoS koruması; 3 yıllık abonelikte indirim (50%).

Bu ana dosya, standart WordPress eklenti başlık bilgilerini içermelidir. İşte temel bir örnek:

<?php
/**
 * Plugin Name: My Custom WooCommerce
 * Plugin URI:  https://yourwebsite.com/
 * Description: 为 WooCommerce 商店添加自定义功能。
 * Version:     1.0.0
 * Author:      您的名字
 * Author URI:  https://yourwebsite.com/
 * License:     GPL v2 or later
 * Text Domain: my-custom-woocommerce
 * Domain Path: /languages
 * WC requires at least: 5.0.0
 * WC tested up to: 8.0.0
 */

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 检查 WooCommerce 是否已激活
if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    add_action( 'admin_notices', function() {
        ?>
        <div class="notice notice-error">
            <p>“My Custom WooCommerce” eklentisi için WooCommerce’in yüklü ve etkinleştirilmiş olması gerekmektedir.</p>
        </div>
        &lt;?php
    } );
    return;
}

Önemli nokta, kullanılan yöntemin etkili olmasıdır. WC requires at leastWC tested up to Başlık bilgileri, ile ilgili beyanları içerir. WooCommerce Uyumluluğu kontrol edin ve kodda bunu doğrulayın. WooCommerce Aktif mi?

Çekirdek Genişletme Yöntemi: Eylem ve Filtre Hook’ları

WooCommerce Güçlü yanı, son derece genişletilebilir kancalı (hook-based) sistemidir. Eylem kancalarını (Actions) ve filtre kancalarını (Filters) anlamak ve ustaca kullanmak, özelleştirilmiş geliştirmelerin (customized development) temelini oluşturur.

İşlemde eylem kancaları (action hooks) kullanarak müdahale edin.

Aksiyon hook’ları, belirli bir olay gerçekleştiğinde kodunuzun çalışmasına olanak tanır. WooCommerce Belirli bir zamanda kendi kodunuzu ekleyebilirsiniz. Örneğin, bir kullanıcı sipariş verdiğinde özel bir işlem gerçekleştirmek isteyebilirsiniz (dış bir API’yi çağırmak gibi).

Tavsiye edilen okuma WordPress Eklenti Geliştirme Pratik Rehberi: Sıfırdan Başlayarak İlk İşlevsel Eklentinizi Oluşturun

Bunu kullanabilirsiniz. woocommerce_thankyou Kancalar, sipariş teşekkür sayfasında tetiklenir. Veya daha genel bir yöntem kullanılabilir. woocommerce_checkout_order_processedSipariş işlemleri tamamlandığında tetiklenir.

add_action( 'woocommerce_checkout_order_processed', 'my_custom_order_action', 10, 3 );

function my_custom_order_action( $order_id, $posted_data, $order ) {
    // 获取订单对象(如果未提供)
    if ( ! $order instanceof WC_Order ) {
        $order = wc_get_order( $order_id );
    }

// 执行您的自定义逻辑,例如记录日志或发送请求
    $logger = wc_get_logger();
    $logger->info( '订单 #' . $order_id . ' 已创建,开始执行自定义任务。', array( 'source' => 'my-custom-plugin' ) );

// 调用外部 API 示例(伪代码)
    // $response = wp_remote_post( 'https://api.example.com/notify', $args );
}

Verileri filtre kancaları kullanarak değiştirme

Filtre hook’ları, değişiklikler yapmanıza olanak tanır. WooCommerce İletilen veriler. Örneğin, tüm ürün fiyatlarına sabit bir işlem ücreti eklemek istiyorsunuz.

Bunu kullanabilirsiniz. woocommerce_product_get_price Filtreler: Bu araç çok güçlüdür, ancak tüm fiyat gösterimlerini etkileyeceği için dikkatli kullanılmalıdır.

hosting.com Paylaşımlı Barındırma
AMD EPYC CPU'lar, NVMe SSD depolama ve LiteSpeed ile yüksek performans, 7/24, 7x7 uzman şirket içi destek, SSL, kaba kuvvet, kötü amaçlı yazılım ve DDoS koruması dahil gelişmiş güvenlik önlemleri, 73%'ye kadar tasarruf
add_filter( 'woocommerce_product_get_price', 'my_custom_price_adjustment', 10, 2 );

function my_custom_price_adjustment( $price, $product ) {
    // 只在前端购物车和商品页面应用,避免影响后台
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
        return $price;
    }

// 假设增加 5 元手续费
    $fee = 5;
    $new_price = $price + $fee;

return $new_price;
}

Özelleştirilmiş Ürün Türleri ve Veri Depolama

WooCommerce Varsayılan olarak basit ürünler ve değişken ürünler desteklenmektedir. Ancak bazen “rezervasyonlu ürünler” veya “hizmet tipi ürünler” gibi tamamen yeni ürün türleri oluşturmanız gerekebilir.

Yeni bir ürün türü kaydedin.

Yeni bir ürün türü oluşturmak birçok adımı içerir. Öncelikle, bu türü kaydetmeniz gerekir. Bu genellikle… init Eylem veya eklenti yüklendiğinde tamamlanır.

add_action( 'init', 'register_my_custom_product_type' );

function register_my_custom_product_type() {
    class WC_Product_Custom extends WC_Product {
        public function __construct( $product ) {
            parent::__construct( $product );
            $this->product_type = 'custom';
        }

// 您可以在这里重写父类方法,或添加新方法
        public function get_type() {
            return 'custom';
        }

// 示例:自定义“添加到购物车”按钮文本
        public function add_to_cart_text() {
            return __( '预约服务', 'my-custom-woocommerce' );
        }
    }
}

Daha sonra, bu türü ürün türü seçim listesine filtreler aracılığıyla eklemeniz gerekiyor.

Tavsiye edilen okuma WooCommerce Özel Ürün Sayfalarını Kolayca Oluşturun: Başlangıçtan Uzmanlığa

add_filter( 'product_type_selector', 'add_custom_product_type_to_dropdown' );

function add_custom_product_type_to_dropdown( $types ) {
    $types['custom'] = __( '自定义服务', 'my-custom-woocommerce' );
    return $types;
}

Ürüne özel alanlar ekleyin.

Yeni ürün türleri için genellikle ek veri alanlarına ihtiyaç duyarsınız. Bu, aşağıdaki yöntemlerle sağlanabilir: WooCommerce Ürün veri kutusunu (Metabox) gerçekleştirmek için kullanılır. woocommerce_product_options_general_product_data Eyleme bir alan ekleyin ve bunu kullanın. woocommerce_process_product_meta Eylemleri kaydedin.

add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_fields' );

function add_custom_product_fields() {
    global $product_object;

echo '<div class="options_group show_if_custom">'; // `show_if_custom` 仅对“custom”类型显示

woocommerce_wp_text_input( array(
        'id'          =&gt; '_service_duration',
        'label'       =&gt; __( '服务时长 (小时)', 'my-custom-woocommerce' ),
        'desc_tip'    =&gt; true,
        'description' =&gt; __( '请输入完成此服务预计需要的小时数。', 'my-custom-woocommerce' ),
        'type'        =&gt; 'number',
        'custom_attributes' =&gt; array(
            'step' =&gt; '0.5',
            'min'  =&gt; '0.5'
        )
    ) );

echo '</div>'İşlemi kaydet.';

// Alanları kaydet.
add_action( 'woocommerce_process_product_meta', 'save_custom_product_fields' );

function save_custom_product_fields( $post_id ) {
    $product = wc_get_product( $post_id );
    if ( $product-&gt;get_type() === 'custom' ) {
        $duration = isset( $_POST['_service_duration'] ) ? sanitize_text_field( $_POST['_service_duration'] ) : '';
        $product-&gt;update_meta_data( '_service_duration', $duration );
        $product-&gt;save_meta_data();
    }
}

Alışveriş sepeti ve ödeme süreciyle etkileşim kurmak

Alışveriş sepeti ve ödeme işlemleri, e-ticaretin temel unsurlarıdır.WooCommerce Burada, özelleştirmek için kullanılabilecek birçok “hook” (düzenleme aracı) bulunmaktadır.

InterServer Paylaşımlı Barındırma
Paylaşımlı hosting aylık $2.50 USD, ilk ay $0.1 USD promosyon kodu tryinterserver, 461 bulut uygulaması komut dosyası, tek tıklamayla yükleme.

Alışveriş sepeti öğelerinin davranışlarını değiştirme

Bunu şu yolla yapabilirsiniz: woocommerce_add_cart_item_data Filtreler, ürünler alışveriş sepetine eklendiğinde özel veriler ekler. Örneğin, “Özel Hizmet” kategorisindeki bir ürüne bir randevu tarihi ekleyebilir.

add_filter( 'woocommerce_add_cart_item_data', 'add_custom_data_to_cart_item', 10, 3 );

function add_custom_data_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $product = wc_get_product( $product_id );
    if ( $product->get_type() === 'custom' && isset( $_POST['appointment_date'] ) ) {
        $cart_item_data['appointment_date'] = sanitize_text_field( $_POST['appointment_date'] );
        // 确保每个有不同预约日期的商品都被视为独立项目
        $cart_item_data['unique_key'] = md5( microtime() . rand() );
    }
    return $cart_item_data;
}

Daha sonra, bunu kullanabilirsiniz. woocommerce_get_item_data Filtreler, bu özelleştirilmiş verileri alışveriş sepeti ve ödeme sayfalarında gösterir.

Özelleştirilmiş ödeme alanları

Ödeme bilgilerini eklemek veya değiştirmek oldukça yaygındır. Kullanımı oldukça yaygındır. woocommerce_checkout_fields Filtreler kolayca gerçekleştirilebilir.

add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );

function add_custom_checkout_field( $fields ) {
    $fields['billing']['billing_custom_vat'] = array(
        'label'       => __( '增值税号', 'my-custom-woocommerce' ),
        'placeholder' => _x( '请输入您的公司税号', 'placeholder', 'my-custom-woocommerce' ),
        'required'    => false, // 根据业务需求调整
        'class'       => array( 'form-row-wide' ),
        'clear'       => true,
        'priority'    => 35, // 控制字段顺序
    );
    return $fields;
}

Bu alanın değerini siparişe kaydetmek için kullanılması gereken şey… woocommerce_checkout_update_order_meta Eylem.

add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );

function save_custom_checkout_field( $order_id ) {
    if ( ! empty( $_POST['billing_custom_vat'] ) ) {
        update_post_meta( $order_id, '_billing_custom_vat', sanitize_text_field( $_POST['billing_custom_vat'] ) );
    }
}

Özetle.

WooCommerce Eklentilerin özelleştirilerek geliştirilmesi, onların mimarisini anlamaktan başlayan sistematik bir süreçtir. Doğru geliştirme ortamının kurulmasından, standartlara uygun eklenti iskeletlerinin oluşturulmasına; ardından da eklentinin “kancaları” (eylemler ve filtreler) aracılığıyla çekirdek süreçlere müdahale edilmesine veya değişikliklerin yapılmasına kadar her adım, benzersiz özelliklerin oluşturulmasının temelidir. Özel ürün türleri ve meta alanları oluşturarak veri modelini genişletebilir ve karmaşık iş ihtiyaçlarını karşılayabilirsiniz. Son olarak, alışveriş sepeti ve ödeme süreçlerine akıllıca etkileşimler ve veriler ekleyerek kullanıcı deneyimini ve işletme verimliliğini doğrudan artırabilirsiniz. Her zaman en iyi uygulamalara bağlı kalın: yeterli testler yapın, kod güvenliğini sağlayın, iyi dokümantasyon oluşturun ve bu süreçlere dikkat edin. WooCommerce WordPress’in çekirdek güncellemeleriyle birlikte kullanmak, geliştirdiğiniz eklentilerin stabil, verimli ve uzun ömürlü olmasını sağlar.

Sıkça Sorulan Sorular.

WooCommerce eklentisi geliştirmek için hangi ön koşul bilgilerine ihtiyaç vardır?

WooCommerce eklentisi geliştirmek için sağlam bir PHP programlama temeline sahip olmak gerekmektedir; ayrıca nesne yönelimli programlama (OOP) kavramlarına aşina olmak önemlidir. Aynı zamanda, WordPress’in temel mekanizmalarına derinlemesine hakim olmak gerekmektedir; bu mekanizmalar arasında kancalı sistem (eylemler ve filtreler), özel makale türleri, meta veriler ve eklentiler ile temaların standart yapıları yer almaktadır. Ön uç etkileşimler için temel HTML, CSS ve JavaScript bilgilerine sahip olmak da oldukça faydalıdır.

WooCommerce eklentilerindeki sorunları nasıl ayıklarım?

Öncelikle, 'den emin olun. wp-config.php Dosyada bu özellik etkinleştirilmiştir. WP_DEBUGWP_DEBUG_LOGHataları bir günlük dosyasına kaydedin. İkincisi, bunları tam olarak kullanın. WooCommerce Yerleşik günlük sistemi, şu şekilde çalışır: wc_get_logger() Fonksiyonlar, kritik noktalarda bilgi kaydeder. Ön uç (front-end) ile ilgili sorunlar için, tarayıcının geliştirici araçlarını (konsol ve ağ paneli) kullanarak inceleme yapabilirsiniz. Ayrıca, çakışmaları ortadan kaldırmak amacıyla diğer eklentileri geçici olarak devre dışı bırakabilir ve varsayılan temaya geçebilirsiniz.

Fiyat filtresini değiştirdim, peki neden arka plandaki ürün listesindeki fiyatlar da değişti?

Bu sık karşılaşılan bir sorundur. Birçok fiyatla ilgili filtre hem ön tarafta (frontend) hem de arka tarafta (backend) etki gösterir. Bu durumu önlemek için, filtre fonksiyonlarında koşullu ifadeler kullanarak filtrelerin etki alanını sınırlamanız gerekir. Genellikle bu işlem şu şekilde yapılır: is_admin() && ! defined( 'DOING_AJAX' ) Mevcut durumun arka plan yönetim arayüzünde olup olmadığını ve bir AJAX isteği gerçekleştirilip gerçekleştirilmediğini kontrol edin (çünkü alışveriş sepeti güncellemesi gibi işlemler AJAX aracılığıyla yapılır ve fiyat hesaplaması gereklidir). Önceki örneklerde bu işlemin nasıl yapılacağını zaten gösterdik.

Özelleştirilmiş ürün türleri siparişte “Basit Ürün” olarak görünüyorsa, ne yapmalıyım?

Bunun nedeni şu ki... WooCommerce Siparişe ürün anlık görüntüsü (snapshot) eklerken, özel olarak tanımladığınız ürün türlerinin doğru bir şekilde tanınmaması mümkündür. Ürünü sepete eklerken, tür bilgilerinin doğru bir şekilde iletilmesini sağlamanız gerekmektedir. Lütfen bunu kontrol edin. WC_Product_Custom Sınıf, doğru şekilde miras alındı mı? WC_Product Ve ayarlandı. $this->product_typeAyrıca, bir siparişten ürünler alınırken…WooCommerce Muhtemelen temel bir nesne (instance) oluşturulacaktır. WC_Product Nesne. Doğru şekilde örneklenmesini sağlamak için muhtemelen bazı işlemler yapmanız gerekebilir. woocommerce_order_get_items Filtreler, özel türlerinizi eşleştirmek için kullanılır.

Kendi özel eklentiminin gelecekteki WooCommerce güncellemeleriyle uyumlu olmasını nasıl sağlayabilirim?

Uyumluluğu korumanın anahtarı, resmi geliştirme uygulamalarıyla senkronize kalmaktır. Her zaman bunları kullanın. WooCommerce Açık API’ler ve araçlar kullanın; çekirdek dosyaları doğrudan değiştirmekten veya açık olmayan sınıfları ve metotları kullanmaktan kaçının. Eklentinin başlık bilgilerinde uyumlu olduğu sürümleri doğru bir şekilde belirtin. WooCommerce Sürüm (Version)WC tested up toDüzenli olarak… WooCommerce Testleri, test sürümünde veya en yeni sürümde gerçekleştirin. Takipte kalın. WooCommerce Resmi geliştirme blogunu ve güncelleme kayıtlarını takip ederek yakında kullanımdan kaldırılacak özellikler ile yeni API’ler hakkında bilgi edinin.