POWERX THEME V0.0.1 AUDIT Tarih: 08 Eylül 2026 | Denetçi: Antigravity Code Inspector

Mevcut Tema Hata Tespit & Çözüm Raporu

Bu rapor, eksik dosya eklemeleri (404.php, comments.php vb.) yapılmadan önce, temanın mevcut kod tabanında yer alan mantıksal, mimari ve işlevsel mevcut hataları (bugs) listelemek üzere hazırlanmıştır. Kullanıcıdan onay ("düzelt") gelene kadar kodlarda hiçbir değişiklik yapılmayacaktır.

!

3

Kritik Hata (Critical)

⚠

4

Büyük Hata (Major)

✓

4

Orta Düzey Hata (Moderate)

⚙

3

Küçük / Standart (Minor)

Sıralama: Öncelik Sırasına Göre (HATA-01'den HATA-14'e)
HATA-01

WooCommerce Şablonlarında woocommerce_content() Çağrılması (Örtüşen Başlık ve Kırık Döngü)

Kritik (Bariz Hata)
Dosya: PowerX/archive-product.php (Satır 54-56) Dosya: PowerX/woocommerce/archive-product.php (Satır 54-56) Dosya: PowerX/single-product.php (Satır 64-66)
Hatanın Detayı & Kök Nedeni:
WooCommerce resmi standartlarına göre, woocommerce_content() fonksiyonu yalnızca woocommerce.php dosyası içinde kullanılır ve archive-product.php veya single-product.php şablonlarında çağrılması kesinlikle yasaktır.

Bu fonksiyon kendi içinde <h1 class="page-title">, woocommerce_before_shop_loop, kendi ürün döngüsünü ve kendi sayfalama mekanizmasını basar. Temamızın header.php dosyasındaki Page Title Hero alanı ile WooCommerce'in bu fonksiyonu çakışmakta, çift başlık basılmasına ve standart WooCommerce kancalarının (woocommerce_before_main_content, woocommerce_after_main_content) tetiklenememesine yol açmaktadır.
// Hatalı Mevcut Kod (archive-product.php ve woocommerce/archive-product.php): <div class="powerx-content-area"> <?php if ( function_exists( 'woocommerce_content' ) ) { woocommerce_content(); // <-- YASAK ÇAĞRI: Kendi içinde loop + title + hooks tetikliyor! } ?> </div>
Önerilen Düzeltme:
WooCommerce standart şablon yapısına geçilmeli: woocommerce_product_loop(), woocommerce_product_loop_start(), wc_get_template_part( 'content', 'product' ) ve woocommerce_product_loop_end() kancaları yerleştirilmeli; single-product.php içinde ise wc_get_template_part( 'content', 'single-product' ) kullanılmalıdır.
HATA-02

Tema Kök Dizini ile /woocommerce/ Altındaki Şablonların Çelişmesi ve Agresif template_include

Kritik (Bariz Hata)
Dosya: PowerX/single-product.php vs PowerX/woocommerce/single-product.php Dosya: PowerX/inc/woocommerce.php (Satır 15-38)
Hatanın Detayı & Kök Nedeni:
Temada hem kök dizinde hem de woocommerce/ dizininde aynı isimli şablonlar bulunmaktadır. Daha vahimi, iki dosyadaki kodlar birbiriyle çelişmektedir:
  • Kök single-product.php: woocommerce_content(); çağırıyor.
  • Alt woocommerce/single-product.php: wc_get_template_part( 'content', 'single-product' ); çağırıyor.
Üstelik inc/woocommerce.php dosyasında template_include filtresine 99 öncelikle müdahale edilerek WooCommerce'in kendi şablon yükleyicisi bypass edilmektedir. Bu durum diğer WooCommerce eklentilerinin (sepet, ödeme, özel CPT ürünleri) şablon hiyerarşisini felç etmektedir.
Önerilen Düzeltme:
WooCommerce şablonları yalnızca woocommerce/ klasöründe tutulmalı, kök dizindeki mükerrer ve hatalı kopyalar temizlenmeli, inc/woocommerce.php içerisindeki yapay template_include zorlaması kaldırılarak WooCommerce'in yerel şablon hiyerarşisine tam uyum sağlanmalıdır.
HATA-03

archive.php İçinde WooCommerce Ürünlerinin Blog Makalesi Olarak Listelenmesi

Kritik
Dosya: PowerX/archive.php (Satır 175-182) Dosya: PowerX/template-parts/content.php
Hatanın Detayı & Kök Nedeni:
archive.php satır 55'te $is_woo_shop koşulunda $post_type = 'product' atanmaktadır. Ardından satır 179'daki döngüde: get_template_part( 'template-parts/content', get_post_type() ); çağrılmaktadır.

Temanın template-parts/ klasöründe content-product.php adında bir dosya YOKTUR! (Yalnızca woocommerce/content-product.php mevcuttur). WordPress bu dosyayı bulamayınca varsayılan template-parts/content.php dosyasını yükler.
Sonuç olarak: Mağaza veya ürün kategori sayfası archive.php üzerinden açıldığında, ürünler e-ticaret kartı olarak değil, "Devamını Oku..." butonlu blog makalesi gibi listelenmektedir!
// archive.php Satır 179: while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', get_post_type() ); // <-- get_post_type() = 'product'. Dosya yok, content.php (blog) yükleniyor! endwhile;
Önerilen Düzeltme:
Post type product olduğunda wc_get_template_part( 'content', 'product' ) çağrılmalı veya köprü şablon (bridge template) sağlanmalıdır.
HATA-04

page.php Şablonunda Kenar Çubuğu (Sidebar) Desteğinin Tamamen Unutulmuş Olması

Büyük Hata
Dosya: PowerX/page.php (Satır 46-62) Dosya: PowerX/inc/sidebars.php (Satır 164-176)
Hatanın Detayı & Kök Nedeni:
inc/sidebars.php içinde is_page() durumu için dinamik sidebar ayarları (Göster/Gizle, Sol/Sağ, Genişlik) kodlanmıştır. Meta kutularında da sayfa bazlı sidebar seçenekleri sunulmaktadır.

Ancak page.php dosyası incelendiğinde; ne bir $show_sidebar kontrolü, ne powerx-layout-grid sınıfı, ne de get_sidebar() çağrısı bulunmaktadır! Sayfada sidebar seçilse bile arayüzde asla gösterilmemektedir.
// page.php Satır 47-60: <div class="site-container"> <?php while ( have_posts() ) : the_post(); // Sadece the_content() basılıyor, get_sidebar() çağrısı HİÇ YOK! endwhile; ?> </div><!-- .site-container -->
Önerilen Düzeltme:
page.php içine powerx_get_sidebar_config() bağlanmalı; Elementor olmayan veya standart sayfalarda sidebar seçilmişse powerx-layout-grid düzeni ve get_sidebar() eklenmelidir.
HATA-05

Yapışkan Menüde (Sticky Header) Çift Script ve Yarış Durumu (Race Condition)

Büyük Hata
Dosya: PowerX/header.php (Satır 107-151) Dosya: PowerX/assets/js/powerx-theme.js (Satır 1-48)
Hatanın Detayı & Kök Nedeni:
Hem header.php içine satır içi <script id="powerx-sticky-engine-inline"> basılmakta, hem de assets/js/powerx-theme.js dosyası içinde aynı mantıkla çalışan ikinci bir handleStickyScroll scroll dinleyicisi bulunmaktadır!

Sayfa kaydırıldığında iki ayrı JavaScript motoru aynı anda .powerx-header-elementor-sticky elemanına is-sticky sınıfını ekleyip çıkarmaya çalışmakta, bu da sayfa kaydırma sırasında menüde titreme (flicker), takılma ve performans kaybına yol açmaktadır.
Önerilen Düzeltme:
header.php içerisindeki satır içi (inline) JavaScript bloğu tamamen kaldırılmalı; yapışkan menü mantığı tek bir merkezden, harici ve önbelleklenebilir powerx-theme.js motoru üzerinden temiz şekilde yürütülmelidir.
HATA-06

Header Şablonundaki _powerx_sticky_header Ayarının Elementor Header'da Etkisiz Kalması

Büyük Hata
Dosya: PowerX/header.php (Satır 51-58 ve 91-106) Dosya: PowerX-Core-Eklentisi/powerx-core/powerx-core.php (Satır 403, 430)
Hatanın Detayı & Kök Nedeni:
Core eklentisinde her Header şablonu için "Sticky Header: Yes / No" meta ayarı bulunmaktadır. header.php satır 54'te bu değer okunup $sticky_enabled = true yapılmaktadır.

Ancak satır 92'de Elementor Header basılırken $sticky_enabled değişkeni asla kontrol edilmemektedir! Yalnızca Theme Settings altında tamamen ayrı bir sticky_header_template_id tanımlanmışsa yapışkan menü üretilmektedir. Kullanıcı ana header'ını yapışkan yapmak istediğinde ayar çalışmamaktadır.
Önerilen Düzeltme:
Ayrı bir yapışkan header şablonu seçilmemiş olsa bile; aktif header şablonunda _powerx_sticky_header = 'yes' işaretliyse, mevcut header'a yapışkanlık sınıfları ve davranışları otomatik entegre edilmelidir.
HATA-07

WooCommerce Şablonlarındaki Fazladan div.powerx-sidebar-area Nedeniyle Kırılan Grid Kuralı

Büyük Hata
Dosya: PowerX/archive-product.php (Satır 67) Dosya: PowerX/single-product.php (Satır 75) Dosya: PowerX/style.css (Satır 1744)
Hatanın Detayı & Kök Nedeni:
single.php, archive.php ve diğer şablonlarda get_sidebar() doğrudan çağrılır ve <aside class="powerx-sidebar"> elemanı .site-container'ın doğrudan çocuğu olur.

Ancak WooCommerce şablonlarında get_sidebar() fazladan bir <div class="powerx-sidebar-area"> ile sarılmıştır. style.css satır 1744'teki doğrudan çocuk seçicisi (.site-container.powerx-layout-grid.powerx-sidebar-left > .powerx-sidebar) bu sarmalayıcı yüzünden eşleşememekte ve WooCommerce sayfalarında sol sidebar düzeni bozulmaktadır.
Önerilen Düzeltme:
WooCommerce şablonlarındaki gereksiz sarmalayıcı kaldırılmalı veya style.css kuralı .powerx-sidebar-area'yı da kapsayacak şekilde eşitlenmelidir.
HATA-08

archive.php İçinde powerx_collection vs powerx_product Taksonomi Karışıklığı

Orta Düzey
Dosya: PowerX/archive.php (Satır 67-85)
Hatanın Detayı:
Satır 68'de post type sabit olarak $post_type = 'powerx_collection'; atanmaktadır. Satır 69'da ise $taxonomy = is_tax( 'powerx_product_cat' ) ? 'powerx_product_cat' : 'powerx_collection_cat'; denilmektedir. Kullanıcı powerx_product ana arşiv sayfasındayken is_tax('powerx_product_cat') false döner. Dolayısıyla $taxonomy yanlışlıkla powerx_collection_cat olur. Sitede powerx_product CPT'si aktifse kategoriler boş gelir.
HATA-09

Kod Tabanında Sabit Kodlanmış Türkçe Dizgeler (ThemeForest Kural İhlali)

Orta Düzey
Dosyalar: content.php, content-powerx_product.php, item-default.php, template-tags.php
Hatanın Detayı:
POWERX_GELISTIRME_NOTLARI.md 3. Altın Kuralına ve ThemeForest standartlarına aykırı olarak kaynak kodda şu dizgeler sabit Türkçe yazılmıştır:
  • template-parts/content.php: 'Devamını Oku...'
  • template-parts/content-powerx_product.php: 'Ürünü İncele'
  • template-parts/cards/item-default.php: 'Ürünü İncele'
  • woocommerce/content-product.php: 'Ürünü İncele'
  • inc/template-tags.php: 'Ürün Görselleri', 'Görsel %d', 'Önceki Görsel', 'Sonraki Görsel'
Önerilen Düzeltme:
Kaynak kodda tüm dizgeler uluslararası standart İngilizceye ('Read More...', 'View Product', 'Product Gallery') dönüştürülmeli; Türkçe çeviriler languages/tr_TR.po dosyasından servis edilmelidir.
HATA-10

POWERX_VERSION Sabitinin Versiyon Dizgisi Yerine Unix Timestamp Olması

Orta Düzey
Dosya: PowerX/functions.php (Satır 19)
Hatanın Detayı:
define( 'POWERX_VERSION', file_exists( $powerx_style_file ) ? filemtime( $powerx_style_file ) : '0.0.1' );
filemtime() tam sayı (örn. 1788812345) döndürür. Bu durum class-powerx-theme-updater.php içindeki version_compare() karşılaştırmalarını ve tema sürüm standartlarını bozar. Sabit kuralımız uyarınca POWERX_VERSION sabit olarak '0.0.1' olmalıdır.
HATA-11

search.php ve index.php Şablonlarında get_post_format() Yanılgısı

Orta Düzey
Dosyalar: PowerX/index.php (Satır 40) | PowerX/search.php (Satır 62)
Hatanın Detayı:
Arama sonuçlarında özel yazı türleri (Hizmetler, Ürünler, Koleksiyonlar) geldiğinde get_post_format() boş döner ve tüm sonuçlar blog yazısı şablonuyla listelenir. Özel kart tasarımları arama sonuçlarında kaybolur.
HATA-12

inc/theme-setup.php İçinde $content_width Global Değişkeninin Eksik Olması

Küçük / Standart
Dosya: PowerX/inc/theme-setup.php
Hatanın Detayı:
WordPress çekirdeği ve Theme-Check standardı gereği oEmbed video/medya genişliğini sınırlayan global $content_width; if ( ! isset( $content_width ) ) { $content_width = 1200; } tanımı eksiktir.
HATA-13

Uzak Tema Güncelleyicisinde (Updater) Harf Büyüklüğü (Case-Sensitivity) Riski

Küçük / Standart
Dosya: PowerX/inc/classes/class-powerx-theme-updater.php (Satır 19)
Hatanın Detayı:
private string $theme_slug = 'PowerX'; Linux sunucularda tema klasörü küçük harfle (powerx) açılmışsa wp_get_theme('PowerX')->exists() false dönebilir. Dinamik olarak get_template() kullanılmalıdır.
HATA-14

Meta Box _powerx_header_overlap Değer Tutarsızlığı (on/off vs yes/no)

Küçük / Standart
Dosyalar: class-powerx-meta-boxes.php (Satır 268) vs powerx-core.php (Satır 522)
Hatanın Detayı:
Tema meta kutusunda on/off değerleri kullanılırken, core eklentisi yes/no saklamaktadır. Veritabanında veri tutarsızlığına yol açmaktadır; standart yes/no/default ile eşitlenmelidir.