HUSKY - WooCommerce Product Filter Professional

Özel Sayfada veya Ana Sayfada WooCommerce Ürün Filtresi

WooCommerce ürün filtresini özel bir sayfaya, bir açılış sayfasına veya ana sayfaya yerleştirirsiniz ve üç durumdan biri yaşanır: form görünür ama hiç ürün çıkmaz, her tıklama sizi mağazaya atlatır ya da sayfa yeniden yüklenir ve hiçbir şey değişmez. Bunların hiçbiri hata değildir. [woof] kısa kodu yalnızca arama formunu yazdırır; sonuçların nerede gösterileceğine ise eklenti, sayfada başka neler olduğuna bakarak karar verir. Aşağıda bu kararın nasıl verildiğini ve yaygın durumlar için tam kısa kod kurulumlarını bulacaksınız: filtre ve ürünlerin aynı sayfada olması, tek bir kategori veya niteliğe sınırlı bir sayfa ve ziyaretçileri sonuçlara yönlendiren bir ana sayfa formu.

Özel sayfadaki WooCommerce ürün filtresi ziyaretçileri nereye gönderir?

Ziyaretçi Filtrele (Filter) düğmesine bastığında (veya otomatik gönderme açıkken bir seçeneği değiştirdiğinde), eklentinin betiği ?swoof=1&pa_color=red gibi bir bağlantı oluşturur ve geçerli sayfada yenileyebileceği bir ürün listesi arar: [woof_products] çıktısı, WooCommerce [products] kısa kodu veya bir .woocommerce kapsayıcısı içindeki herhangi bir .products listesi. Bulursa sonuçlar aynı sayfada açılır. Bulamazsa ziyaretçi, WooCommerce → Ayarlar → Ürünler → Mağaza sayfası (WooCommerce → Settings → Products → Shop page) bölümünde seçilen sayfa olan mağaza sayfasına gider.

Sayfanın içeriğiSonuçların göründüğü yer
Yalnızca [woof]Seçili filtrelerle mağaza sayfası
[woof] + [woof_products]Aynı sayfa; is_ajax=1 ise yeniden yükleme olmadan
[woof] + WooCommerce [products]Aynı sayfa, yeniden yüklemeden sonra
[woof redirect="..."] ve AJAX ürün ızgarası yokredirect içindeki URL
Tek bir ürün sayfası (ilgili ürünler sayılmaz)Mağaza sayfası veya redirect URL'si

Bir şey kurmadan önce bilmeye değer iki sonuç var. WooCommerce'te mağaza sayfası ayarlanmamışsa ziyaretçiyi göndereceği bir yer yoktur ve filtre, tek ürün sayfası dahil, hangi sayfadaysa onu yeniden yükler. Ayrıca ana sayfanız herhangi bir ürün bloğu gösteriyorsa (öne çıkan ürünler, WooCommerce işaretlemesiyle oluşturulmuş bir indirim karuseli), filtre bu bloğu sonuç ızgarası sayar ve mağazayı açmak yerine ana sayfayı yeniden yükler.

Filtre ve ürünler aynı sayfada

Küçük bir mağaza gibi çalışan bir sayfa için iki kısa kod yerleştirin. Bunlar farklı bloklarda veya sütunlarda durabilir; örneğin form dar sütunda, ürünler geniş sütunda olabilir:

[woof]
[woof_products per_page=12 columns=3 is_ajax=1]
  • per_page: mutlaka ayarlayın. Belirtilmezse [woof_products], eklentinin Gelişmiş → Seçenekler (Advanced → Options) sekmesindeki Sayfa başına ürün sayısı (Products per page) değerini kullanır; bu değer -1 ise (varsayılan), WordPress'in Blog sayfalarında en fazla gösterilecek yazı (Blog pages show at most) ayarını kullanır ve bu da çoğu sitede 10'dur.
  • columns: satır başına ürün sayısı. Temanın buna uyup uymadığı temanın CSS'ine bağlıdır.
  • is_ajax=1: sonuçlar sayfa yeniden yüklenmeden değiştirilir ve filtrelenmiş sayfa paylaşılabilsin diye adres çubuğu güncellenir. is_ajax=0 ile sayfa yeniden yüklenir. Özel bir sayfada AJAX'ı açan şey bu özniteliktir; Mağazayı AJAX'a çevirmeyi dene (Try to ajaxify the shop) seçeneği yalnızca mağaza ve kategori arşivlerini etkiler.

[woof_products] ürünleri temanızın ürün kartıyla (content-product.php şablonu) oluşturur ve standart WooCommerce döngü kancalarını çalıştırır; böylece sonuç sayısı, sıralama ve sayfalama mağaza sayfasındaki gibi görünür.

WooCommerce [products] kısa kodu da filtrelenebilir: bir filtre etkinken HUSKY, o kısa kodun sorgusuna kendi koşullarını ekler. [woof] yanındaki [products limit="12" columns="4" paginate="true"] sayfa yeniden yüklemesiyle çalışır; AJAX için HUSKY'nin kaydettiği ikizini, aynı özniteliklerle [products_woof] kısa kodunu kullanın.

Sayfayı tek bir kategori, etiket veya niteliğe sınırlayın

Tek bir marka, tek bir konum veya "yalnızca yenilenmiş akıllı telefonlar" için hazırlanan bir sayfa, ziyaretçilerin kaldıramayacağı kalıcı bir koşul gerektirir. Bu, taxonomies özniteliğidir ve her iki kısa kodda da bulunmalıdır:

[woof taxonomies="product_cat:87+product_tag:105" tax_exclude="product_cat,product_tag"]
[woof_products taxonomies="product_cat:87+product_tag:105" per_page=12 columns=3 is_ajax=1]

Sözdizimi taxonomy:ID biçimindedir. Aynı taksonomiye ait birden çok kimlik virgülle ayrılır; farklı taksonomiler + ile birleştirilir ve hepsinin eşleşmesi gerekir. Varsayılan OR mantığıyla product_cat:87,92+pa_brand:14, "87 veya 92 numaralı kategoride ve 14 numaralı markada" anlamına gelir; 87 ve 92'nin alt kategorilerindeki ürünler de dahildir. Bir taksonomiyi eklenti ayarlarında AND mantığına geçirdiyseniz, bu mantık buradaki kimlikleri için de geçerlidir.

Slug veya ad değil, terim kimliği

Eklenti her değeri verilen kimliğe sahip bir terime dönüştürür. cadeau gibi bir slug veya Yes gibi bir ad kimlik değildir, hiçbir şeyle eşleşmez ve koşulun o kısmı hata vermeden düşer; sayfa da tüm ürünleri gösterir. Kimliği bulmak için Ürünler → Kategoriler (Products → Categories) sayfasını (veya Etiketler (Tags), ya da Ürünler → Nitelikler → Terimleri yapılandır (Products → Attributes → Configure terms)) açın, terimin Düzenle (Edit) bağlantısının üzerine gelin ve bağlantıdaki tag_ID= ifadesinden sonraki sayıyı okuyun.

Taksonomi adı tam olmalıdır: product_cat, product_tag, genel nitelikler için pa_ artı nitelik slug'ı (color değil, pa_color) veya bir marka taksonomisi gibi özel bir taksonominin slug'ı. Doğrudan tek bir ürüne yazılan özel nitelikler taksonomi değildir ve burada kullanılamaz.

Her kısa kod değerle ne yapar?

  • [woof_products] içinde ürünleri sınırlar. İşi yapan kısım budur.
  • [woof] içinde formun saydığı şeyi sınırlar: Sayıyı göster (Show count) ve Dinamik yeniden sayım (Dynamic recount) açıkken seçeneklerin yanındaki sayılar ve fiyat aralığı aynı sınırlı kümeyi tanımlar; Boş terimleri gizle (Hide empty terms) açıkken bu sayfada ürünü olmayan seçenekler kaybolur. AJAX modunda form, her filtrelemeden sonra [woof_products] içindeki değerle yeniden çizilir; bu yüzden ikisini aynı tutun, yoksa sayılar ilk tıklamadan sonra değişir.

Koşul URL'de değildir; sayfanın bir parçasıdır. Sıfırlama veya her şeyin işaretini kaldırma sizi sayfaya döndürür ve koşul hâlâ oradadır. Önceden filtrelediğiniz blokları tax_exclude ile (virgülle ayrılmış taksonomi adları) gizleyin ya da tax_only ve by_only ile kısa bir form oluşturun; örneğin [woof tax_only="pa_brand,pa_size" by_only="by_price"]. by_only="none" fiyatı, metin aramasını ve taksonomi dışındaki diğer filtreleri gizler. Daha fazla birleşim farklı sayfalarda farklı filtreler nasıl gösterilir bölümünde, tam öznitelik listesi ise [woof] kısa kod sayfasında yer alır. Taksonomi yerine bir meta alanıyla önceden filtrelemek için arama verilerini değiştirme sayfasına bakın.

Mağazaya yönlendiren ana sayfa filtresi

Sağlam bir ana sayfa kurulumu, ziyaretçileri bir sonuç sayfasına gönderen bir arama formudur:

[woof redirect="https://example.com/shop/" autosubmit=1 ajax_redraw=1 tax_only="product_cat,pa_size" by_only="none"]
  • redirect: sonuç sayfası. Mağaza, https://example.com/product-category/tires/ gibi bir kategori arşivi (kategori adreste olduğu için sonuçlar o kategorinin içinde kalır) veya [woof] ile [woof_products] içeren özel bir sayfa olabilir. ? içermeyen temiz bir URL kullanın; eklenti buna ?swoof=1&... ekler.
  • Tek başına autosubmit=1, ziyaretçiyi ilk değişiklikte başka yere gönderir; bu tek bir açılır liste için uygundur. Birkaç alanlı bir form için ajax_redraw=1 ekleyin: her seçim yalnızca formu yeniler (sayılar, bağımlı seçenekler) ve Filtrele (Filter) düğmesi sonuç sayfasını açar. autosubmit=0 ile ziyaretçi Filtrele (Filter) düğmesine basana kadar hiçbir şey olmaz.

"Yönlendirme çalışmıyor" şikâyetlerinin çoğuna yol açan kurallar:

  • Yönlendirme AJAX modunda yok sayılır. Aynı sayfada [woof_products is_ajax=1] veya [products_woof] de varsa, form onun yerine o ızgarayı filtreler.
  • Bir sayfa, bir filtre. Bir sayfada birden çok form olduğunda betik redirect, autosubmit ve ajax_redraw değerlerini bulduğu ilk formdan alır. Kenar çubuğundaki ikinci bir form veya ürünlerin üstündeki otomatik bir filtre, yapılandırdığınız formu sessizce geçersiz kılabilir. HUSKY widget'ının aynı amaç için kendi Yönlendir (Redirect to) alanı vardır.
  • Ana sayfa formundaki bir taxonomies koşulu yönlendirmeyle birlikte taşınmaz; URL'ye yalnızca ziyaretçinin seçtikleri girer. Form tek bir kategoriyle ilgiliyse o kategorinin arşivine yönlendirin.

Neden statik ön sayfanın kendisinde filtrelenmez?

Yerinde filtreleme sıradan sayfalarda çalışır. Statik ön sayfa bunun istisnasıdır: product_cat veya product_tag gibi parametreler aynı zamanda WordPress sorgu değişkenleridir ve sitenin kök adresinde göründüklerinde WordPress isteği artık ön sayfanız olarak ele almaz. Temaya bağlı olarak ziyaretçiler bir kategori arşivi, boş bir sayfa veya SEO eklentisinin eklediği bir Sayfa bulunamadı (Page not found) başlığı görür. Filtreyi ve [woof_products] kısa kodunu normal bir sayfaya (örneğin /products/) koyun ve ana sayfa formunun oraya yönlendirmesini sağlayın.

Ürünleri yalnızca ziyaretçi filtreledikten sonra gösterin

Yalnızca formla açılması gereken bir açılış sayfası için [woof_products] kısa koduna display_on_search=1 ekleyin. Bir filtre uygulanana kadar ürün alanı boş kalır; ilk aramadan sonra sayfa sonuçları gösterir. Belgeler bu özniteliği yeniden yükleme modu için anlatır; bu yüzden onu is_ajax=0 ile kullanın. Ayrıntılar [woof_products] kısa kod sayfasında.

Tek ürün sayfaları, menüler ve sayfa oluşturucu ızgaraları

  • Tek ürün sayfaları. Ürün sayfası kenar çubuğundaki bir filtre her zaman mağazayı (veya redirect URL'sini) açar; ilgili ve çapraz satış ürünleri sonuç sayılmaz.
  • Menüler ve mega menüler. Kategori öğelerini, kısa kod içeren sayfalara değil, gerçek kategori arşivlerine (/product-category/.../) bağlayın. Arşivler hiçbir kurulum olmadan filtrelenebilir ve filtreleme sırasında kategoriyi korur.
  • Oluşturucu ürün ızgaraları. Elementor, Divi veya kendi ürün sorgusunu çalıştıran başka bir oluşturucunun ızgarası, form sayfada kalsa bile filtreye tepki vermez. Onu [woof_products] ile değiştirin veya sorgusunu filtre URL'si değişiyor ama ürünler değişmiyor bölümünde anlatıldığı gibi filtrelenebilir yapın.
  • Kategori şablonlarında [woof_products]. Kısa kod, hangi kategori arşivine yerleştirildiğini bilmez; sayfalar için tasarlanmıştır. Bir kategori şablonunda taxonomies vermezseniz tüm ürünleri gösterir; bu yüzden orada standart arşiv ürün döngüsünü koruyun.

Hâlâ çalışmıyorsa

  • Tırnaklar düz tırnaktır. Bir kelime işlemciden veya bazı web sayfalarından kopyalanan kısa kodlar, WordPress'in öznitelik tırnağı olarak kabul etmediği kıvrık tırnaklarla (’pa_age’) gelir. Bunları bir Kısa kod bloğunda yeniden yazın.
  • taxonomies içindeki her değer sayısal bir terim kimliğidir, taksonomi adı tamdır, + veya : çevresinde boşluk yoktur ve her iki kısa kod da aynı değeri taşır.
  • [woof_products] kısa kodunda per_page vardır; böylece sayfa 10 üründe durmaz.
  • WooCommerce ayarlarında bir Mağaza sayfası seçilmiştir.
  • Sayfada yalnızca bir filtre formu vardır veya istediğiniz redirect değerini ilk form taşır.
  • Sayfadaki ürün ızgarası [woof_products], [products] veya [products_woof] olup kendi sorgusu olan bir oluşturucu widget'ı değildir.

Tüm bunlar doğruysa ve sayfa hâlâ yanlış davranıyorsa, sayfa bağlantısını ve her iki kısa kodu editördeki haliyle HUSKY destek forumunda paylaşın.