Wordpress Admin Menü Çubuğunu Kaldırma

Wordpress'e Admin Menü Çubuğunu Kaldırma (Admin Hariç Diğer Kullanıcılar İçin)

Kullanıcı siteye giriş yaptığında en üstte görünen siyah menü çubuğunu (admin menu bar) kaldırmak için aşağıdaki kodu functions.php içine ekleyin. Admin hariç diğer kullanıcılar için kaldırılmış olacaktır.

/**
 * Remove Admin Bar
*/
function wpb_remove_admin_bar() {
    if (!current_user_can('administrator') && !is_admin()) {
          show_admin_bar(false);
    }
}
add_action('after_setup_theme', 'wpb_remove_admin_bar');

Opencart Sözlüğü

Opencart Dictionary


TR


Opencart Ürün Listeleme Modülleri
BestsellerEn çok satan ürünler. Genelde anasayfada en çok satan ürünleri listelemek için kullanılır.
FeaturedSeçilen ürünler. Sizin tek tek seçerek belirlediğiniz ürünlerden oluşan bir listedir.
LatestYeni ürünler. Mağazaya en son eklediğiniz ürünleri içeren listedir.
Specialİndirimli ürünler. İndirimli fiyat girdiğiniz ürünleri içeren listedir.

Diğer
AffiliateOrtaklık. Opencart ortaklık sistemine sahiptir. Modüller içinden bunu aktif hale getirebilir, mağaza ayarlarınızdan komisyon ve başvuru ayarlarını düzenleyebilirsiniz.
TransactionsMağaza kredisi. Mağazanın hesabınıza tanımladığı bakiye ile alışveriş yapabilirsiniz. Bu kredi ile yaptığınız işlemleri ve kalan bakiyenizi Hesabım > Bakiye İşlemleri menüsünden takip edebilirsiniz.

EN

Opencart Product Listing Modules
BestsellerBest selling products. It is often used to list the best selling products on the homepage.
FeaturedSelected products. It is a list of products that you choose individually.
LatestNew products. This is the list of products you recently added to the store.
SpecialDiscounted products. The discounted price is the list that contains the products you entered.

Other
AffiliateReseller. Opencart has reseller system. You can activate this from within the modules, and edit commission and application settings from your store settings.
TransactionsStore credit. You can shop with the balance defined by the store to your account. You can track your transactions with this credit and your remaining balance on the My Account > Your Transactions menu.

Opencart Müşteri Bilgileri (ad, soyad, eposta, telefon vb.)

Opencart Get Customer Info (firstname, lastname, email, telephone etc.)

Opencart sistemi üzerinde oturum açmış olan müşteriye ait bilgileri almak için aşağıdaki metodları kullanabilirsiniz. Bunları system/library/cart/customer.php (versiyona göre customer.php yolu değişmektedir) içerisinde detaylı olarak görebilirsiniz.

$customer_is_logged      = $this->customer->isLogged();
$customer_id             = $this->customer->getId();
$customer_first_name     = $this->customer->getFirstName();
$customer_last_name      = $this->customer->getLastName();
$customer_group_id       = $this->customer->getGroupId();
$customer_email          = $this->customer->getEmail();
$customer_telephone      = $this->customer->getTelephone();
$customer_fax            = $this->customer->getFax();
$customer_newsletter     = $this->customer->getNewsletter(); //müşterinin bülten aboneliği var mı (1,0)
$customer_address_id     = $this->customer->getAddressId();
$customer_balance        = $this->customer->getBalance(); //müşterinin toplam mağaza kredisi tutarı
$customer_reward_points  = $this->customer->getRewardPoints(); //müşterinin kazandığı puanların toplamı



MYSQL Sayısal(int) Değerlerin Farkları


Tinyint, Smallint, Mediumint, Int, Bigint alanları arasındaki farklar:


          | Byte     Range(signed)                                Range (unsigned)
--------------------------------------------------------------------------------------------
tinyint   | 1 byte   -128 to 127                                  0 to 255
smallint  | 2 bytes  -32768 to 32767                              0 to 65535
mediumint | 3 bytes  -8388608 to 8388607                          0 to 16777215
int       | 4 bytes  -2147483648 to 2147483647                    0 to 4294967295
bigint    | 8 bytes  -9223372036854775808 to 9223372036854775807  0 to 18446744073709551615

Opencart Para Birimleri Mevzuları


T.C. MERKEZ BANKASINDAN KURLARI ALMA

erdalatabalkan Doviz Kurlari Guncellemesi eklentisi bu iş için bence en iyisi. Çünkü opencart standart özellikleri üzerinden çalışıyor ve hiçbir dosyayı upload etmek gerekmiyor. Döviz kurlarını TCMB efektif satış değeri üzerinden alıp günceller. Ben efektif satış değerini kullanıyorum çünkü en yüksek değer bu fakat kodlarda ufak değişiklik ile bunu değiştirebilirsiniz.


PARA BİRİMLERİNİ GÜNCELLEME

MANUEL YÖNTEM:
Eğer güncelleme işlemini manuel yapmak isterseniz Admin > Ayarlar > Yerelleştirme > Para Birimleri > Yenile (turuncu buton) tıklayın.

OTOMATİK YÖNTEMLER:
1) Admin > Ayarlar > Seçenekler > Yerel > Para Birimini Otomatik Güncelle > Evet seçerek opencart standart güncellemesini açabilirsiniz. Daha sonra Opencart Admin Panelin anasayfasına (diğer sayfayarda olmuyor) her girdiğinizde para birimleri otomatik güncellenecektir. Otomatik para birimi güncellemesi açık olsa dahi, Admin Panel anasayfasına girmezseniz güncelleme gerçekleşmeyecektir!!!

2) İlk maddede belirttiğim üzere Admin Panel anasayfasında gerçekleşen güncelleme komutlarını, yine Admin panelde daha sık girdiğiniz Siparişler sayfasına ekleyebilirsiniz. Bu kodu dashboard.php controller dosyası içinde bulabilirsiniz. Kopyalayıp siparişler sayfası controller dosyasındaki index metodu içine ekleyiniz. Bu işi yapan vqmod komutları aşağıdaki gibidir:
<file path="admin/controller/sale/order.php">
<operation>
  <search><![CDATA[public function index() {]]></search>
  <add position="after"><![CDATA[
  // Run currency update
  if ($this->config->get('config_currency_auto')) {
    $this->load->model('localisation/currency');

    $this->model_localisation_currency->refresh();
  }
  ]]></add>
</operation>
</file>
3) Yukarıda verdiğim kodlar ile bir admin/controller dosyası oluşturun. Ardından bu dosyanın url'si ile CPanel'den bir cron job oluşturun. Böylece otomatik güncellemeyi sağlamış olursunuz. Bu mantıkla hazırlanmış GrandCMS gibi eklentileri Opencart marketinden indirip kullanabilirsiniz. Ben test etmediğim için burada işin mantığını anlatmaya çalıştım.

Bu üç yöntemden birini veya hepsini birden aynı anda kullanabilirsiniz.

 

ÇOKLU PARA BİRİMİ İLE ÇALIŞMA

Opencart mağazanızda birden fazla para birimi ile çalışmanız mümkün. Bu işlem mağazanızın üst menüsünde bulunan para birimlerinden birini seçmek kadar kolay. Dolar, Euro, TL, ... ne seçerseniz o mağazaki bütün fiyatlar bu para biriminden gösterilmeye başlayacaktır. 

Taki ödeme aşamasına gelene kadar hiçbir sorun olmayacaktır. Eğer ödeme aşamasında mağazanın varsayılan para birimi ne ise o birimden işlemin gerçekleşmesini isterseniz bu sorun olacaktır. Kredi kartı modülünüzden veya herhangi bir sebepten dolayı, örneğin fiyatlar Euro olarak gösterilse dahi, son aşamada TL olarak ödensin isteyebilirsiniz.

İşte Opencart standart olarak bunu sağlamıyor malesef! Bu durumda çoklu para birimi eklentileri devreye giriyor. Çoklu para birimi kullanımından kastettiğim de budur. Çözüm için opencart eklenti mağazasında farklı eklentiler bulmanız ve sisteminize göre entegre etmeniz mümkün. Burada kendi hazırladığım Çoklu Para Birimi eklentisini paylaşamıyorum fakat benimle iletişime geçerek talep edebilirsiniz.


SSS

1) Opencart para birimlerini otomatik güncelleme özelliği nereden aktif hale getirilir?
Admin > Ayarlar > Seçenekler > Yerel > Para Birimini Otomatik Güncelle > Evet seçerek güncellemeyi aktif hale getirirsiniz.

2) Opencart otomatik olarak para birimlerini hangi aralıkta / ne zaman günceller?
Admin Panel anasayfasına her girdiğinizde günceller. Admin panelin diğer sayfalarında güncelleme olmaz sadece anasayfasında olur. Tabiki 1. maddede belirttiğim gibi otomatik güncelleme özelliğinin açık olması gereklidir.



Bu yazıda paylaştığım eklentileri hazırlayan arkadaşlara teşekkür ederim.
Son Güncelleme: 4/6/2020

Opencart Samesite Hatası ve Çözümü


Samesite Hatası:
Yeni Chrome güncellemesi ile yaşanan Samesite hatası opencart için de sıkıntı oluşturmaktadır. Özellikle ödeme aşamasında 3D güvenlik sms'i için banka sayfasına gidip geri döndüğünüzde oturumunuzun sonlanması durumu ciddi sıkıntılara yol açmaktadır. Ödeme alınsa dahi sipariş oluşmamaktadır. Samesite hatası hakkında ayrıntılı bilgi için: https://dev.iyzipay.com/tr/sss/samesite-problemi-nedir


Çözüm:
Öncelikle kullandığınız php sürümünün 7.3 veya üstü olduğuna emin olunuz. Bu çözüm için en az 7.3 sürümü gereklidir fakat daha düşük bir sürüm kullanıyorsanız verdiğim kaynaklara bakarak kodları değiştirebilirsiniz, ben test edemediğim için eklemedim. Yine bu çözümü opencart 2.3 versiyonu üzerinde denediğimi ve sorunsuz çalıştığını belirtmeliyim. Eksik gördüğünüz bir kısım olursa yorum yazmanızı rica ederim. Ayrıntısını aşağıda vereceğim fakat genel olarak session_start() ve setcookie() komutları öncesine 'samesite' => 'None' ve secure parametrelerini ekleyerek çözdüm.
Not: Bu çözümü opencart için yazdım fakat kendi yazılımınız için de uygulayabilirsiniz. Bulup değiştireceğiniz komutlar yine bu iki komuttur.

Düzenlediğim opencart dosyaları ve değişiklikler:

1. system/library/session.php

Bul:
session_set_cookie_params(0, '/');
session_start();
Değiştir:
if (PHP_VERSION_ID < 70300) {
    session_set_cookie_params(0, '/; samesite=None', '.yoursite.com', true, true);
} else {
    ini_set('session.cookie_samesite', 'None');
    session_set_cookie_params([
        'lifetime' => 0,
        'path' => '/',
        'domain' => '.yoursite.com',
        'secure' => true,
        'httponly' => true,
        'samesite' => 'None'
    ]);
}
session_start();

Bul:
setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));Değiştir:
if (PHP_VERSION_ID < 70300) {
    setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
} else {
    $samsite_cookie_options = array (
        'expires' => ini_get('session.cookie_lifetime'),
        'path' => ini_get('session.cookie_path'),
        'domain' => ini_get('session.cookie_domain'),
        'secure' => true, // or false
        'httponly' => true, // or false
        'samesite' => 'None' // None || Lax || Strict
    );
    setcookie($key, $this->session_id, $samsite_cookie_options);
}

Bul:
setcookie($key, '', time() - 42000, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
Değiştir:
if (PHP_VERSION_ID < 70300) {
    setcookie($key, '', time() - 42000, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
} else {
    $samsite_cookie_options = array (
        'expires' => time() - 42000,
        'path' => ini_get('session.cookie_path'),
        'domain' => ini_get('session.cookie_domain'),
        'secure' => true, // or false
        'httponly' => true, // or false
        'samesite' => 'None' // None || Lax || Strict
    );
    setcookie($key, '', $samsite_cookie_options);
}

2. catalog/controller/startup/startup.php

Bul:
setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
Değiştir:
if (PHP_VERSION_ID < 70300) {
    setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
} else {
    $samsite_cookie_options = array (
        'expires' => time() + 60 * 60 * 24 * 30,
        'path' => '/',
        'domain' => $this->request->server['HTTP_HOST'],
        'secure' => true, // or false
        'httponly' => true, // or false
        'samesite' => 'None' // None || Lax || Strict
    );
    setcookie('language', $code, $samsite_cookie_options);
}

Bul:
setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/');
Değiştir:
if (PHP_VERSION_ID < 70300) {
    setcookie('tracking', $this->request->get['tracking'], time() + 3600 * 24 * 1000, '/');
} else {
    $samsite_cookie_options = array (
        'expires' => time() + 3600 * 24 * 1000,
        'path' => '/',
        'domain' => $this->request->server['HTTP_HOST'],
        'secure' => true, // or false
        'httponly' => true, // or false
        'samesite' => 'None' // None || Lax || Strict
    );
    setcookie('tracking', $this->request->get['tracking'], $samsite_cookie_options);
}

Bul:
setcookie('currency', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
Değiştir:
if (PHP_VERSION_ID < 70300) {
    setcookie('currency', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
} else {
    $samsite_cookie_options = array (
        'expires' => time() + 60 * 60 * 24 * 30,
        'path' => '/',
        'domain' => $this->request->server['HTTP_HOST'],
        'secure' => true, // or false
        'httponly' => true, // or false
        'samesite' => 'None' // None || Lax || Strict
    );
    setcookie('currency', $code, $samsite_cookie_options);
}

3. Bütün dosyalarınızı aratarak session_start() ve setcookie() komutlarını yukarıdaki gibi değiştiriniz. Aslında ilk 2 dosya üzerindeki değişiklikler yeterli olmaktadır ama yine de bir süprizle karşılaşmamak için diğer dosyalarınızı da taramanızı öneririm.


...


Gelen sorular üzerine ekliyorum. Opencart 2.1.0.1 için aşağıdaki ekran görüntülerindeki 3 dosyayı düzenlemeniz gerekmektedir. session_start ve setcookie komutlarını arayarak kendiniz de bulabilirsiniz. Bu satırları bulup yukarıdaki örneklerdeki gibi değiştiriniz.





Opencart Sık Kullanılan MYSQL Sorguları


Ürün Açıklamasında Toplu Güncelleme Yapma:
Mağazanızdaki ürünlerin açıklamasında toplu olarak bir değişiklik yapmanız gerektiğinde mysql database üzerinde çalıştıracağınız örnek update sorgusu aşağıdaki gibidir:
UPDATE oc_product_description SET description = REPLACE(description, 'Bağımsız tabakalar halindedir', 'Bağımsız yapraklar halindedir') WHERE INSTR(description, 'Bağımsız tabakalar halindedir') > 0
Böylece text içindeki bir kelime veya cümleyi değiştirebilirsiniz.


Ürün Açıklamasında Toplu Güncelleme Yapma (Ürün Adına Göre Arayarak):
Mağazanızdaki ürünlerin açıklamasında toplu olarak bir değişiklik yapmanız gerektiğinde mysql database üzerinde çalıştıracağınız örnek update sorgusu aşağıdaki gibidir:
UPDATE oc_product_description SET description = REPLACE(description, '%100 pamuklu tuval bezi, köknar ağacından üretilir', '%90 pamuklu tuval bezi, çınar ağacından üretilir') WHERE INSTR(name, 'Basic Seri Tuval') > 0


Birden Fazla Ürünün Durumunu Tek Seferde Güncelleme:
Product ID'leri belli olan birden fazla ürünün durumunu tek seferde güncellemek için:
UPDATE oc_product SET status = 0 WHERE product_id IN (1563,1564,1566,1607,1617,1620)


Ürün seçenek tablosunda çift girilmiş verileri bulma:
Hatalı olarak iki kere girilen verileri bulmak için:
SELECT name, COUNT(*) c FROM oc_option_value_description WHERE language_id=2 GROUP BY name HAVING c > 1


Ürün fiyatlarını toplu güncelleme:
Örneğin ürün kodunda digital geçmeyenlerin fiyatını %15 arttırmak için:
UPDATE oc_product SET price = (price * 1.15) WHERE model NOT LIKE '%digital%'


..