Bu hata kayıtlarında WooCommerce ve Shopier ödeme eklentisinde bazı ciddi hatalar olduğunu gösteriyor. Özellikle şu sorunlar öne çıkıyor:

1. Hatalı Order Erişimi


Hata Mesajı:
id was called incorrectly. Order properties should not be accessed directly.
order_key was called incorrectly.
Sebep:
WooCommerce 3.0 sonrası sürümlerde WC_Order nesnesinin özelliklerine doğrudan erişim yasaklandı. Bunun yerine WooCommerce’in sunduğu metodlar kullanılmalı.
Çözüm:
Shopier ödeme eklentisindeki id ve order_key erişimlerini şu metodlarla değiştirmeniz gerekiyor:
Yanlış:
php
KopyalaDüzenle
$order_id = $order->id;
$order_key = $order->order_key;
Doğru:
php
KopyalaDüzenle
$order_id = $order->get_id();
$order_key = $order->get_order_key();
Eğer eklenti güncel değilse, güncellenmesini sağlayın veya manuel olarak düzenleyin.

2. Tanımsız Değişken ($productNames)


Hata Mesajı:
PHP Warning: Undefined variable $productNames in /home/isim/public_html/wp-content/plugins/shopier-payment-gateway-woocommerce2.0/index.php on line 221
Sebep:
$productNames değişkeni tanımlanmadan kullanılmış. Büyük ihtimalle ödeme işlemi sırasında ürün adlarını almak için bir fonksiyon eksik.
Çözüm:
  • index.php dosyanızın 221. satırında $productNames değişkeninin nasıl kullanıldığını kontrol edin.
  • Tanımlı değilse, aşağıdaki kodla ürün isimlerini çağırmayı deneyin:
php
KopyalaDüzenle
$productNames = array();
$items = $order->get_items();
foreach ($items as $item) { $productNames[] = $item->get_name(); }
$productNames = implode(', ', $productNames);
Bu kod ile siparişe ait ürünlerin isimleri alınarak $productNames değişkeni oluşturulmuş olur.

3. PHPMailer Hatası


Hata Mesajı:
PHP Fatal error: Uncaught Error: Call to undefined function PHPMailerPHPMailermail() in /home/isim/public_html/wp-includes/PHPMailer/PHPMailer.php:880
Sebep:
WordPress’in kendi PHPMailer eklentisi bozulmuş olabilir veya eksik dosyalar var.
Çözüm:
  1. WordPress Çekirdeğini Güncelleyin
    Yönetici panelinden Araçlar > Site Sağlığı sekmesine girerek WordPress dosyalarının bütünlüğünü kontrol edebilirsiniz.
    Alternatif olarak, terminal üzerinden WordPress çekirdeğini tekrar yükleyin:
    css
    KopyalaDüzenle
    wp core download --force
  2. Eklentileri Devre Dışı Bırakıp Test Edin
    Aşağıdaki komutlarla eklentileri devre dışı bırakıp test edebilirsiniz:
    css
    KopyalaDüzenle
    wp plugin deactivate --all
    Daha sonra WooCommerce ve Shopier eklentisini tek tek aktifleştirerek sorunun hangi eklentiden kaynaklandığını bulun.
  3. PHPMailer Dosyalarını Yeniden Yükleyin
    /wp-includes/PHPMailer/ klasörünü WordPress’in resmi sürümünden indirip tekrar yükleyin.

Genel Çözüm Önerileri:


WooCommerce ve Shopier ödeme eklentisini güncelleyin.
WordPress çekirdek dosyalarını doğrulayın ve eksik olanları tekrar yükleyin.
Eklentileri tek tek devre dışı bırakıp sorunu hangi eklentinin tetiklediğini bulun.
PHP sürümünüzü kontrol edin ve PHP 8+ ile uyumluluğunu doğrulayın.
Sorunun devam edip etmediğini kontrol ettikten sonra geri bildirim verebilirsiniz. 🚀