Ürün kataloğu

WooCommerce otomatik indirim kategorisi: üç dürüst seçenek

Herkesin bulduğu functions.php parçacığı üyeliği yalnızca sorgu anında taklit eder ve indirimin bittiği sabah tüm kataloğunuzu tam fiyatıyla gösterir. Neden yapısal olarak hatalı olduğunu ve gerçekten kendi kendini güncelleyen bir indirim sayfası kurmanın üç yolunu anlatıyoruz.

Çoğu mağaza er ya da geç aynı şeyi ister: bir fiyat düştüğü anda kendini dolduran, fiyat geri çıktığında kendini boşaltan bir /product-category/sale/ adresi. WooCommerce’in bunun için bir ayarı yok. WooCommerce indirim kategorisini otomatik hale getirmenin yolunu arattığınızda en üstteki sonuç neredeyse her zaman aynıdır: woocommerce_product_query kancasına bağlanan bir functions.php parçacığı. Altındaki yorum akışı ise on yıldır bu kodun çalışmadığını bildiren insanlardan oluşan bir kuyruk.

Bu parçacık yalnızca eskimiş değil. Yapısal olarak bu işe uygun bir biçimde kurulmamış ve nedenini anlamak, WooCommerce ya da PHP her kımıldadığında onu yeniden düzeltmekten sizi kurtarır. Bu yazı önce arızanın nasıl ortaya çıktığını anlatıyor, yine de istiyorsanız düzeltilmiş bir sürümünü veriyor ve ardından kendi kendini güncelleyen bir indirim sayfası elde etmenin üç dürüst yolunu ortaya koyuyor. Her birinin size gerçekte neye mal olduğuyla birlikte.

Kısa cevap#

WooCommerce’te yerleşik bir otomatik indirim kategorisi yoktur: On Sale Products koleksiyonu size listeyi verir ama kategoriyi vermez, gerçek bir kategori ise product_cat terim atamalarını fiilen yazan bir kural gerektirir. Yaygın wc_get_product_ids_on_sale() parçacığı üyeliği yalnızca sorgu anında taklit eder.

  • Parçacık üyeliği taklit eder. woocommerce_product_query kancasına bağlanıp kategori kısıtını indirimdeki ürün kimliklerinin listesiyle değiştirmek hiçbir terim ilişkisi oluşturmaz; bu yüzden kategorinin wp-admin’deki sayacı sıfır görünür, ürün listesini filtrelemek için kullanılamaz ve akışlar ile ERP köprüleri açısından görünmezdir.
  • Boş dizi tuzağı. Hiçbir ürün indirimde değilken boş bir dizi verilen post__in hiçbir şey değil, her şeyi döndürür. Bu, #28099 numaralı kayıtta wontfix olarak işaretlenmiş bir WordPress davranışıdır. Yani bir kampanyanın bittiği sabah tüm kataloğunuz “Sale” başlığı altında tam fiyatıyla görünür.
  • Önbelleklenmiş ve zamanlaması kayan veri. İndirimdeki ürün listesi 30 günlük bir transient’tır ve dinamik, role dayalı ya da toplu fiyatlandırma gibi çalışma anında hesaplanan indirimleri hiçbir zaman görmez; zamanlanmış indirimler de gece yarısında değil, woocommerce_scheduled_sales eylemi bir sonraki kez çalıştığında başlar.
  • Yalnızca görüntüleme seçenekleri güvenlidir. WooCommerce’in kendi On Sale Products koleksiyonu ya da [products on_sale=”true”] kısa kodu gerçekten otomatiktir, kod gerektirmez ve bozulmaz; ama size ne bir kategori adresi, ne breadcrumb, ne menüde bir yer ne de filtrelerle etkileşim verir.
  • Her yerde yalnızca gerçek terimler işe yarar. product_cat terimlerini kuralla gerçekten atamak wp_term_relationships tablosuna gerçek satırlar yazar; böylece yönetim listeleri, sayaçlar, breadcrumb’lar, menüler, faceted filtreler ve akışlar düzgün çalışır. İndirim bittiğinde de sayaç basitçe sıfıra iner.

Herkesin bulduğu parçacık#

Slug’ı sale olan boş bir ürün kategorisi oluşturuyor, içine hiçbir şey atamıyor ve şunu ekliyorsunuz:

add_action( 'woocommerce_product_query', 'bbloomer_sale_category' );

function bbloomer_sale_category( $q ) {
   if ( "sale" !== $q->get( 'product_cat' ) ) return;
   $q->set( 'post_type', 'product' );
   $q->set( 'product_cat', null );
   $product_ids_on_sale = wc_get_product_ids_on_sale() ? wc_get_product_ids_on_sale() : array();
   $q->set( 'post__in', $product_ids_on_sale );
}

Mantığı takip etmek kolay. Ana ürün sorgusu sale kategorisi için çalıştığında kategori kısıtı atılıyor ve yerine wc_get_product_ids_on_sale() fonksiyonundan gelen açık bir yazı kimliği listesi konuyor. Arşiv şablonu basılır, adres çalışır, ürünler görünür. Temiz bir kurulumda çalışıyormuş gibi durur.

Neden yalnızca eski değil, yapısal olarak hatalı#

Aşağıdakilerin hepsi tek bir karardan doğuyor: parçacık üyeliği sorgu anında taklit ediyor. Hiçbir ürün gerçekte indirim kategorisinde değil. Veritabanında boş bir terim var ve ön yüzde her sayfa yüklemesinde bir kez bu terim hakkında yalan söyleyen bir filtre var.

wp-admin’de kategorinin içi boştur#

Ürünler → Kategoriler ekranını açın; Sale sonsuza kadar 0 sayısını gösterir. Ürün listesini Sale’e göre filtreleyin; hiçbir şey gelmez. İkisi de bir görüntüleme hatası değil, gerçeğin ta kendisidir. Terimin hiçbir ilişkisi yoktur. Yani “indirimdeki her şeyi” toplu düzenleyemezsiniz, bir ürünün kampanyada olup olmadığını tek bakışta göremezsiniz ve terim ilişkilerini okuyan her depo dışa aktarımı, akış üreticisi ya da ERP köprüsü boş bir kategori görür. Yönetim tarafındaki ürün listesi kategoriye, ürün tipine ve stok durumuna göre filtreler; indirimde olma seçeneği yoktur. Dolayısıyla kontrol etmek için ikinci bir yolunuz da yoktur.

Boş dizi tuzağı#

Sizi asıl mahcup edecek olan bu. post__in‘e boş bir dizi vermek WordPress’te sıfır yazı döndürmez, her şeyi döndürür. WP_Query kısıtı yalnızca dizi boş değilken uygular, dolayısıyla boş dizi sessizce yok sayılır. Bu belgelenmiş bir davranıştır: 2014’te #28099 numaralı çekirdek kaydı olarak açıldı ve geriye dönük uyumluluk gerekçesiyle wontfix olarak kapatıldı. Değişmeyecek.

Yani mağazanızda indirimde hiçbir ürün kalmadığı anda indirim kategoriniz boş olmaktan çıkar ve yayımdaki bütün kataloğunuzu Sale yazan bir başlığın altında tam fiyatıyla göstermeye başlar. O an, bir kampanyanın bittiği ertesi sabahtır; yani tam da oraya bakma ihtimalinizin en düşük olduğu zaman. Standart çözüm, bunun yerine array( 0 ) geçmektir, çünkü hiçbir yazının kimliği 0 değildir.

PHP 8 sorunu#

Bu parçacıkta modern PHP açısından yanlış olan iki şey var. Tek bir dizi kurmak için wc_get_product_ids_on_sale() iki kez çağrılıyor, yani bütün arama boşuna ikinci kez çalışıyor. Bir de $q->set( 'product_cat', null ), hem çekirdeğin hem WooCommerce’in dizge olarak okuduğu bir sorgu değişkenine null koyuyor. Özgün parçacığın altındaki yorumlarda, PHP 8.2 çalıştıran sitelerde yakalanmamış bir strstr(): Argument #1 ($haystack) must be of type string, null given hatası bildiriliyor.

Burada dili tam olarak doğru kurmakta yarar var, çünkü bu ayrıntı her yerde yanlış aktarılıyor. Dahili bir fonksiyonun null kabul etmeyen bir parametresine null geçmek PHP 8.1’den beri bir deprecation uyarısıdır ve 8.x hattı boyunca da uyarı olarak kalır; TypeError’a dönüşmesi PHP 9.0 için planlanmıştır. Bugün hata fırlatan şey, declare( strict_types=1 ) ile derlenmiş bir dosyadan yapılan çağrıdır. Aynı parçacığın bir sitede zararsız bir uyarı, başka bir sitede ölümcül hata üretmesinin nedeni de budur. Her iki durumda da çözüm aynıdır: boş bir dizge geçin, kısıtı en az onun kadar etkili biçimde temizler. Düzeltilmiş hali, boş dizi koruması da eklenmiş olarak:

add_action( 'woocommerce_product_query', 'el_sale_category_query' );

function el_sale_category_query( $q ) {

	if ( 'sale' !== $q->get( 'product_cat' ) ) {
		return;
	}

	$ids = wc_get_product_ids_on_sale();

	$q->set( 'post_type', 'product' );
	$q->set( 'product_cat', '' );
	$q->set( 'post__in', $ids ? $ids : array( 0 ) );
}

Bu sürüm güncel PHP ve güncel WooCommerce üzerinde çalışır ve tüm mağazanız yerine boş bir sayfa gösterir. Bu yaklaşımın olabileceği en iyi hali budur. Yine de aşağıdaki sorunların hepsi onda da vardır.

İndirimdeki ürün listesi 30 günlük bir transient#

wc_get_product_ids_on_sale() wc_products_onsale transient’ını okur, bulamazsa ürün veri deposunu sorgular ve sonucu 30 gün önbellekler. Bu arama, kayıtlı indirim fiyatları üzerinde çalışan bir sorgudur: ürün nesnesi kurmaz ve is_on_sale() çağırmaz. Dolayısıyla indirim fiyatı kaydetmek yerine indirimi çalışma anında hesaplayan her şey ona görünmezdir: dinamik fiyatlandırma kuralları, role dayalı fiyatlandırma, adede bağlı toplu indirimler, para birimi değiştirici kurulumlarının çoğu. Bu ürünler müşteri için indirimdedir ama indirim sayfanızda yoktur.

Transient’ı wc_delete_product_transients() temizler; bu fonksiyon da save_post_product kancasına bağlıdır, yani sıradan düzenlemeler listeyi tazeler. Ürün kaydetme adımını atlayan değişiklikler ise tazelemez: doğrudan bir SQL güncellemesi, bazı içe aktarma araçları, WooCommerce’in kancalarını tetiklemeden meta yazan bir eklenti. Bayat liste orada bir ay boyunca durabilir.

Zamanlanmış indirimler sandığınız saatte başlamaz#

İndirim başlangıç ve bitiş tarihlerini wc_scheduled_sales() uygular; onu da tek bir yinelenen eylem çalıştırır: woocommerce_scheduled_sales. Bu eylem 24 saatlik aralıkla, ilk zamanlandığı saate göre kaydedilir, gece yarısına göre değil. Tam indirim saatinde çalışan, ürün başına olaylar yoktur. Eylem ilk kez 20:20’de zamanlandıysa, bugün başlaması gereken bir indirim bugün 20:20’de başlar. Bu uyumsuzluk WooCommerce izleyicisinde açık bir konu olarak duruyor. Üstüne bir de WP-Cron’un istek tetiklemeli doğasını koyun; trafiği düşük bir mağazada saatler daha gecikebilir.

Kendi sitenizdekini WooCommerce → Durum → Zamanlanmış Eylemler altında woocommerce_scheduled_sales araması yaparak kontrol edebilirsiniz. Bu, parçacığın suçu değil; iyi olanlar dahil bu sayfadaki bütün yaklaşımları etkiliyor. Ama parçacığın bunu telafi edecek hiçbir yolu yok.

Filtre eklentileri onunla çakışır#

Faceted filtre eklentileri dizinlerini terim ilişkilerinden, sayaçlarını da taksonomi sorgusundan kurar. İndirim sayfanızda bunların ikisi de yoktur. Eklentiye göre ya her facet için sıfır sonuç, ya yanlış sayaçlar ya da eklenti kendi post__in‘ini sizinkiyle kesiştirmeye çalıştığında bir çakışma alırsınız. Çünkü ikisi de aynı sorgu değişkenine yazıyor ve en son çalışan kazanıyor. WooCommerce’in kendi nitelik filtresi bileşenleri bile başka her yerde normal çalışırken bu sayfada uyarı fırlatır; yorum akışlarında bildirilen tam olarak budur.

Parçacığın genellikle haksız yere suçlandığı bir konu#

Tek bir varyasyonunda indirim fiyatı olan varyasyonlu ürünlerin listeden kaçtığı çok tekrarlanır. Kaçmazlar. wc_get_product_ids_on_sale() bulduğu kimlikleri, sıfır olmayan üst kimlikleriyle birleştirir; dolayısıyla tek bir indirimli varyasyonu olan varyasyonlu bir ürün listededir. Varyasyon kimlikleri de listededir ama burada işlevsizdir: post_type değeri product, varyasyonlar ise product_variation, yani hiçbir zaman ekrana gelmezler. Varyasyonlu ürünler bu işin çalışan kısmıdır.

WooCommerce indirim kategorisini otomatik hale getirmek: üç dürüst seçenek#

YaklaşımGerçek kategori adresiwp-admin’de görünürTerim sayacı doğruFiltreler çalışır
On Sale Products koleksiyonu / kısa kodHayırYokYokHayır
Sayfa oluşturan eklentiHayır, o bir SayfaYokYokKısmen
Kurala dayalı gerçek kategoriEvetEvetEvetEvet

1. Yalnızca görüntüleme: On Sale Products koleksiyonu ya da kısa kod#

Tek ihtiyacınız sitenin bir yerinde indirimli ürünlerden oluşan bir bloksa, WooCommerce bunu zaten kutudan çıkarıyor ve onu kullanmalısınız. Düzenleyicide Product Collection bloğunu ekleyin ve On Sale Products koleksiyonunu seçin. Eski, bağımsız ürün ızgarası blokları WooCommerce 9.5’te yumuşak biçimde kullanımdan kaldırıldı; hâlihazırda bulundukları yerde çalışmaya devam ediyorlar ama blok ekleyicide gizliler, o yüzden yeni bir şeyi onların üzerine kurmayın.

Klasik içerikte modern products kısa kodunu kullanın. [sale_products] eski biçimdir ve WooCommerce 3.2’de [products] içine katlanmıştır:

[products on_sale="true" limit="12" columns="4" orderby="date" order="DESC"]

Bu gerçekten otomatiktir, kod gerektirmez ve bozulmaz. Elde edemedikleriniz: bir ürün kategorisi adresi, bir breadcrumb, kategori menünüzde bir yer, mağaza arşivi gibi davranan bir sayfalama ve faceted filtrelerle herhangi bir etkileşim. Bu bir bileşendir, kategori değil. Ana sayfadaki bir şerit için tam da doğru seçim. Aramalarda yükselmesini ve navigasyondan bağlantı vermeyi istediğiniz bir sayfa içinse yeterli değil.

2. Sayfa oluşturan bir eklenti#

Birkaç eklenti, aslında kayıtlı bir sorgu iliştirilmiş bir WordPress Sayfası olan “dinamik koleksiyonlar” sunuyor. Bir adres ve bir şablon elde ediyorsunuz; bu, 1. seçenekten fazlası. Yine de bir product_cat terimi elde etmiyorsunuz: sayfa kategori hiyerarşisinde yer almaz, Giyim kategorisinin altı olamaz, WooCommerce’in kendi kategori bileşenleri ve breadcrumb’ları onu yok sayar ve terim sayaçlarınız hiç değişmez. Sayfa tek başına duracaksa sorun yok. Mevcut yapınızın içine oturması gerekiyorsa yanlış seçim.

3. Kurallarla doldurulan gerçek bir kategori#

Yıldız işareti gerektirmeyen tek yaklaşım, sıkıcı olanıdır: ürünleri kategoriye koyun. Terimi gerçekten atayın ki wp_term_relationships tablosunda gerçek satırlar olsun. O zaman aşağıdaki her şey (yönetim listeleri, sayaçlar, breadcrumb’lar, menüler, filtre eklentileri, akışlar, temanızın kategori bileşeni) çalışır, çünkü kimse kandırılmıyordur. Sorun tamamen bakıma dönüşür: ürünleri kim ekleyip çıkaracak ve ne zaman. Bu, genel olarak ürünleri kurallara göre bir kategoriye atamanın ardındaki soruyla aynıdır ve elle, cron üzerinde WP-CLI ile ya da kuralları sizin yerinize değerlendiren bir eklentiyle yanıtlanabilir.

Küçük bir katalog ve üç ayda bir yapılan bir kampanya için bunu elle yapmak saçma değildir. Her ay zaten ürünleri kategorilere toplu atıyorsanız, bu rutine Sale kategorisini eklemenin size ek bir maliyeti olmaz. İndirim fiyatları haftalık değişmeye ya da otomatik bir yeniden fiyatlandırıcıdan gelmeye başladığı anda makul olmaktan çıkar.

Kimsenin yanıtlamadığı %40 indirim varyantı#

Bu parçacığın her sürümünde gelen en yaygın ikinci soru kademelendirmedir: indirimdeki her şey değil, yalnızca %40 ve üzeri indirimli olanlar. Alışılmış cevap bunun özel geliştirme gerektirdiğidir; doğru ama işe yaramaz bir cevap. O yüzden kodu burada veriyorum.

Sorgulanacak bir indirim yüzdesi sütunu yok. Her ürünü örnekleyip yüzdeyi hesaplamanız gerekir; varyasyonlu ürünlerde de her varyasyona tek tek bakmanız gerekir, çünkü bir bedeni %50, geri kalanı %10 indirimli olan bir ürün, tamamı eşit biçimde %40 indirimli bir üründen farklı bir şeydir. Hangisini kastettiğinize karar verin. Bu sürüm, herhangi bir varyasyonda bulunan en derin indirimi kullanır:

function el_best_discount_percent( $product ) {

	$children = $product->is_type( 'variable' ) ? $product->get_children() : array();
	$targets  = $children ? $children : array( $product->get_id() );
	$best     = 0;

	foreach ( $targets as $target_id ) {

		$item = wc_get_product( $target_id );

		if ( ! $item || ! $item->is_on_sale() ) {
			continue;
		}

		$regular = (float) $item->get_regular_price();
		$active  = (float) $item->get_price();

		if ( $regular <= 0 || $active >= $regular ) {
			continue;
		}

		$best = max( $best, ( ( $regular - $active ) / $regular ) * 100 );
	}

	return $best;
}

add_action( 'woocommerce_product_query', 'el_deep_sale_category' );

function el_deep_sale_category( $q ) {

	if ( 'sale-40' !== $q->get( 'product_cat' ) ) {
		return;
	}

	$ids = get_transient( 'el_sale_40_ids' );

	if ( false === $ids ) {

		$ids = array();

		foreach ( wc_get_product_ids_on_sale() as $id ) {

			$product = wc_get_product( $id );

			if ( ! $product || $product->is_type( 'variation' ) ) {
				continue; // parents are already in the list
			}

			if ( el_best_discount_percent( $product ) >= 40 ) {
				$ids[] = $product->get_id();
			}
		}

		set_transient( 'el_sale_40_ids', $ids, HOUR_IN_SECONDS );
	}

	$q->set( 'post_type', 'product' );
	$q->set( 'product_cat', '' );
	$q->set( 'post__in', $ids ? $ids : array( 0 ) );
}

Ek transient’a dikkat edin. O olmadan, bu kategorinin her sayfa yüklemesinde indirimdeki bütün ürünleri ve varyasyonlarını yüklemiş olursunuz; birkaç yüz indirimli üründe bu, gözle görülür bir gecikmedir. Onunla birlikte ise kademe sayfanız bir saate kadar bayat kalır. Ayrıca bunun yukarıdaki bütün yapısal sorunları devraldığını unutmayın: hâlâ terim yok, hâlâ yönetim tarafında görünürlük yok, hâlâ bir filtre eklentisinin görebileceği bir şey yok. Yanlış sorunun daha iyi bir cevabı.

Gerçek bir kategori olmasını istiyorsanız#

Burası kendi ürettiğimiz şeyi anlattığım bölüm, buna göre değerlendirin. Smart Categories for WooCommerce, elinizde zaten var olan bir kategoriye bir kural kümesi bağlayan ve eşleşen ürünlere o terimi atayan ücretsiz bir eklenti. Söz konusu olan gerçek bir product_cat terimidir, paralel bir taksonomi değil. Üyelik gerçek olduğu için terim sayacı doğru olur, yönetim listesini filtrelediğinizde ürünler görünür ve filtre eklentilerinin dizinleyecek bir şeyi olur.

Bu iş için kural şudur: İndirimde doğru. Kademeli varyant içinse İndirimde doğru VE İndirim yüzdesi (%) 40’a eşit veya ondan büyük. İndirim yüzdesi, ücretsiz sürümdeki 35 eşleştirme alanından biridir; dolayısıyla yukarıdaki kademelendirme sorunu 40 satır PHP değil, iki satırlık bir kuraldır. Gruplar iç içe geçer ve herhangi bir grup olumsuzlanabilir, yani indirimde, %40 veya üzeri, stokta, ama Tasfiye kategorisinde değil tek bir kural kümesidir.

İç içe AND, OR ve NOT grupları ile eşleşen WooCommerce ürünlerinin anlık sayısını içeren kural oluşturucu.
Gruplar istediğiniz derinlikte iç içe geçer ve önizleme, siz kuralı kurarken eşleşen ürünleri sayar.

İndirimler açısından iki ayrıntı özellikle önemli. Kurallar ürün oluşturulduğunda ve güncellendiğinde, ayrıca her fiyat veya stok değişikliğinde yeniden çalışır; buna ek olarak günlük bir tarama da vardır. Kimse hiçbir şeyi düzenlemezken başlayan ya da biten bir indirimi yakalayan şey bu taramadır. Ama sınırı konusunda net olalım: tarama, WooCommerce’in halihazırda uyguladığı indirim durumunu okur. Yani fiyatın değişmesiyle kategorinin bunu fark etmesi arasındaki boşluğu kapatır, ama WooCommerce’in zamanlanmış bir indirimi kendi günlük eyleminden daha erken uygulamasını sağlayamaz. Yukarıda anlatılan cron zamanlaması bu sayfadaki her yaklaşımın yukarısında durur. İkinci ayrıntı: eklenti yalnızca kendi oluşturduğu üyelikleri kaydeder, dolayısıyla Sale kategorisine elle eklediğiniz bir ürün hiçbir kural tarafından çıkarılmaz.

Eşleştirme, sayfa yüklemesinde değil, Action Scheduler üzerinden gruplar halinde çalışır; hiçbir şeyi kaydetmeden önce eşleşen ürünleri ve sayılarını canlı bir önizlemede görebilirsiniz. Ortaya çıkan sayfanın sıralaması da orada yönetilir; stokta olmayan ürünleri sona itmek dahil. Bu, bir indirim sayfasında mağazanın başka her yerinde olduğundan daha çok önem taşır.

Yeni oluşturulmuş ve eşleşen WooCommerce ürünleriyle doldurulmuş bir akıllı kategori
Eşleşen ürünler siz kaydeder kaydetmez atanır. Bu, filtrelenmiş bir görünüm değil, gerçek bir ürün kategorisidir.

Kapsamadığı şeyler konusunda da aynı ölçüde net olalım. SEO başlıkları, açıklamaları ya da canonical etiketleri yazmaz; bunlar SEO eklentinizde kalır. Yönlendirme de oluşturmaz. Kategori eklemek yerine kategorilerinizi yeniden yapılandırıyorsanız, önce sıralamalarınızı kaybetmeden kategori yapınızı değiştirmeyi okuyun, çünkü size asıl trafik kaybettiren kısım yönlendirmelerdir.

İndirimin bittiği sabah#

Buradaki her yaklaşım, kampanyanın durduğu gün ne olduğuna göre yargılanır, çünkü kimsenin test etmediği an tam olarak o andır.

  • Özgün parçacık. İndirim fiyatlarını günlük eylem temizler, wc_get_product_ids_on_sale() boş bir dizi döndürür, post__in yok sayılır ve /product-category/sale/ bütün kataloğunuzu tam fiyatıyla sunar. Google bunu siz fark etmeden tarayabilir.
  • Düzeltilmiş parçacık. Boş sayfa, doğru davranış; ama terim hâlâ 0 ürün der, dolayısıyla yönetim tarafında hiçbir şey size kampanyanın bittiğini söylemez.
  • Blok ya da kısa kod. Hiçbir şey basmaz ya da bulunduğu sayfanın içinde WooCommerce’in ürün yok mesajını gösterir. Güvenlidir, ama o sayfada artık bir boşluk vardır.
  • Gerçek terim üyeliği. Kural eşleşmeyi bırakır, terimler kaldırılır, sayaç 0’a iner ve kategori gerçekten boşalır. Bu, temanızın ve SEO eklentinizin nasıl ele alacağını zaten bildiği ve kategoriler ekranından görebileceğiniz bir durumdur.

Boş bir indirim kategorisi hâlâ ürün içermeyen bir sayfa sunan canlı bir adrestir ve buradaki hiçbir şey onu sizin yerinize gizlemez ya da yayından kaldırmaz; ne WooCommerce ne de bir kural eklentisi. Kampanyalar arasında noindex yapılması mı yoksa olduğu gibi bırakılması mı gerektiğine önceden karar verin. Cevap genelde sayfanın bağlantı biriktirip biriktirmediğine bağlıdır ve bu, kategori sayfalarının neden dizine eklenmediği yazısındaki muhakemenin aynısıdır. Hangisini seçerseniz seçin, bunu uygulayan sizin SEO eklentiniz olur.

Kısacası: bu parçacık, kategori kılığına girmiş bir görüntüleme numarasıdır. Yalnızca bir görüntülemeye ihtiyacınız varsa bloğu kullanın; ücretsiz, destekleniyor ve bozulmuyor. Bir kategoriye ihtiyacınız varsa, onu gerçekten kategori yapın.

Okumaya devam

İlgili yazılar