BU DERSİN BAŞLIKLARI
- 1 “Blok beklenmedik ya da geçersiz içerik içeriyor.” Hatası
- 2 AlignmentMatrixControl : Matrix Hizalama Kontrolü
- 3 AlignmentMatrixControl Bileşeninin Kullanımı
- 4 AnglePickerControl : Açı Seçici Kontrolü
- 5 AnglePickerControl Bileşeninin Kullanımı
- 6 BaseControl : Temel Kontrol
- 7 BaseControl Bileşeninin Kullanımı
- 8 BorderBoxControl : Kutu Kenarı Kontrolü
- 9 BaseControl Bileşeninin Kullanımı
- 10 BorderControl : Kenar Kontrolü
- 11 BoxControl : Kenar Kontrolü
- 12 BoxControl Bileşeninin Kullanımı
- 13 Button : Buton Kontrolü
- 14 Button Bileşeninin Kullanımı
- 15 ButtonGroup : Buton Grubu Kontrolü
- 16 ButtonGroup Bileşeninin Kullanımı
- 17 Card : Kart Kontrolü
- 18 Card Bileşeninin Kullanımı
- 19 CheckboxControl : Seçim Kutusu Kontrolü
- 20 CheckboxControl Bileşeninin Kullanımı
- 21 ColorIndicator : Renk Göstergesi Kontrolü
- 22 ColorIndicator Bileşeninin Kullanımı
- 23 ColorPalette : Renk Paleti Kontrolü
- 24 ColorPalette Bileşeninin Kullanımı
- 25 ColorPicker : Renk Seçici Kontrolü
- 26 ColorPicker Bileşeninin Kullanımı
- 27 ComboboxControl : Süzmeli Seçim Kontrolü
- 28 ColorPalette Bileşeninin Kullanımı
- 29 Dashicon : Dashicon Kontrolü
- 30 Dashicon Bileşeninin Kullanımı
- 31 DateTimePicker : Tarih ve Saat Seçme Kontrolü
- 32 DateTimePicker Bileşeninin Kullanımı
- 33 Disabled : Devre Dışı Bırakma Kontrolü
- 34 Disabled Bileşeninin Kullanımı
- 35 MediaUpload : Resim Yükleme Kontrolü
- 36 MediaUpload Bileşeninin Kullanımı
WordPress Block Editörü için “sc-cards” adında bir block kodladığımız yazı dizisine devam ediyoruz. Bu yazımızda, Block Editörü blockları için kontroller eklemeyi ve blockları dinamik hale getirmeyi öğreneceğiz.
Bu yazı, WordPress Block Editörü kodlama konusunda, bundan önce yazdığımız 3 yazının devamı niteliğindedir. Dolayısıyla, bu yazıları görmediyseniz veya tekrar gözden geçirmek isterseniz aşağıdaki bağlantılara tıklayabilirsiniz.
- WordPress Block Editörü İçin Bir Block Oluşturma (@wordpress/create-block ile)
- WordPress Block Editörü İçin Oluşturulan Block Dosyalarının Anatomisi
- WordPress Block Editör İçin Block Ayarları Paneli Oluşturma
WordPress, Block Editörü için, bir çok kontrol bileşeni geliştirmiş ve web developerlar için kullanıma sunmuştur. Şimdi gelin bu bileşenleri ve nasıl kullanıldıklarını görelim.
“Blok beklenmedik ya da geçersiz içerik içeriyor.” Hatası
- Block kodlarken, şu ortamlar arasında devamlı gidip geleceğiz:
- Visual Studio Code editörü: Buraya bloğumuzun kod yapısı için geleceğiz.
- WordPress admin panelde açılmış bir yazı ya da sayfa: Buraya bloğumuzu editör görünümü için geleceğiz.
- WordPress sitemizin tema görünümü (ön yüz): Buraya da bloğumuzun tema görünümü için geleceğiz.
- Bir kontrol eklerken veya başka sebeplerle, bloğun kod yapısındaki HTML yapısını değiştirmek zorunda kalacağız.
- Bloğun HTML çıktısında meydana gelen değişiklikler, hata almamıza sebep olacaktır:
- Yaptığımız değişikliklerin bloğumuza olan etkisini veya nasıl çalıştığını görmek için yönetim panelinde kullandığımız editör sayfasını yenilememiz gerekecek.
- Yenileme işleminden sonra, yaptığımız değişiklikler bloğun editör görünümünde aşağıdaki hataya sebep olur:
- Bu hatadan kurtulmak ve bloğun son halini görmek için, bloğunuzu editörden kaldırın, ve tekrar ekleyin.
AlignmentMatrixControl : Matrix Hizalama Kontrolü
! Bu bileşen henüz deneme aşamasındadır (experimental). İlerleyen dönemlerde, bileşenin yapısında, bloğunuzun hata vermesine sebep olabilecek değişiklikler olabilir.
Görevi
- Yatay ve dikey hizalama ayarı için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
<AlignmentMatrixControl
id="diledigimiz-bir-id-degeri"
label={ __( 'Yatay/Dikey hizalama', 'sc-cards' ) }
value={ attributes.alignment }
onChange={ ( value ) => setAttributes({ alignment: value }) }
/>
- Yukardaki kodda:
- “
id
” değeri, ayar için oluşturulan HTML elemanına birid="diledigimiz-bir-id-degeri"
değeri - “
label
” ise ayar için oluşturulan HTML elemanınaaria-label="Yatay/Dikey hizalama"
özelliği ekler.
- “
Kodun Kullanımı
Bu bileşeni kullanmak için şu adımları takip ederiz:
- Önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “alignment” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"alignment": {
"type": "string",
"default": "center center"
},
}
- Bu değişken, bileşen üzerindeki her bir nokta için ayrı bir değer alır.
- Bu değerler şöyledir:
- “center center”: Ortadaki noktanın değeridir. (Varsayılan olarak ayarladık.)
- “center right”: Orta sağ noktanın değeridir.
- “center left”: Orta sol noktanın değeridir.
- “top right”: Üst sağ noktanın değeridir.
- “top center”: Üst orta noktanın değeridir.
- “top left”: Üst sol noktanın değeridir.
- “bottom right”: Alt sağ noktanın değeridir.
- “bottom center”: Alt orta noktanın değeridir.
- “bottom left”: Alt sol noktanın değeridir.
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor. - Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz. - Bu işlemlerden sonra block-settings.js dosyası şöyle görünecektir:
- Önce, bileşeni
- Yaptığımız ayar,
block.json
dosyasındakiattribute
objesinde saklanır.- Buradan bu ayarı getirmek için,
Edit({ attributes, setAttributes })
vesave({attributes})
fonksiyonları içerisinde iken şu değişkeni kullanırız:attributes.alignment
- Buradan bu ayarı getirmek için,
AlignmentMatrixControl Bileşeninin Kullanımı
- Bu kontrolü eklerken ve kullanırken takip ettiğimiz adımlar, diğer bütün kontroller için de hemen hemen aynıdır.
AnglePickerControl : Açı Seçici Kontrolü
Görevi
- Bir açı değeri oluşturup saklamamızı sağlar.
Görünümü
- Şöyle görünür:
Kod Yapısı
<AnglePickerControl
value={ attributes.angle }
onChange={ ( value ) => setAttributes({ angle: value }) }
/>
Kodun Kullanımı
- Önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “angle” yaptım, siz dilediğiniz bir isim verebilirsiniz.
- Varsayılan değer olarak 0 değerini verdim. Bir değişiklik yapmazsam değeri sıfır olacak.
- “alignment” bir önceki kontrol için eklenmişti, şu an konumuzla ilgisi yoktur.
- Ben bu değişkenin adını “angle” yaptım, siz dilediğiniz bir isim verebilirsiniz.
"attributes": {
"alignment": {
"type": "string",
"default": ""
},
"angle": {
"type": "number",
"default": 0
}
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor. - Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz.
- Önce, bileşeni
- Yaptığımız ayar,
block.json
dosyasındakiattribute
objesindeangle
değişkenin değeri oarak saklanır.- Buradan bu ayarı getirmek için,
Edit({ attributes, setAttributes })
vesave({attributes})
fonksiyonları içerisinde iken şu değişkeni kullanırız:attributes.angle
- Buradan bu ayarı getirmek için,
AnglePickerControl Bileşeninin Kullanımı
BaseControl : Temel Kontrol
Görevi
- Kapsadığı kontrol veya input elemanına bir
<label></label>
ve bir açıklama kısmı ekler.
Görünümü
- Bir
<textarea></textarea>
ile şu şekilde görünür:
Kod Yapısı
<BaseControl
id="textarea-1"
label={__('Text girin', 'sc-cards')}
help={__('Burası şu işe yarar.', 'sc-cards')}
__nextHasNoMarginBottom={ true }
onChange = {(value) => setAttributes({textInput: value})}
>
<textarea id="textarea-1">{attributes.textInput}</textarea>
</BaseControl>
Kodun Kullanımı
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor. - Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz. - Bu işlemlerden sonra block-settings.js dosyası şöyle görünecektir:
- Önce, bileşeni
- Ben bir
<textarea />
elemanı için kullandım, fakat siz bu kontrolü, diğer kontroller de dahil dilediğiniz bir input elemanı ile kullanabilirsiniz.
BaseControl Bileşeninin Kullanımı
BorderBoxControl : Kutu Kenarı Kontrolü
! Bu bileşen henüz deneme aşamasındadır (experimental). İlerleyen dönemlerde, bileşenin yapısında, bloğunuzun hata vermesine sebep olabilecek değişiklikler olabilir.
Görevi
- Birimleri ile birlikte, bir HTML kutusunun;
top
right
bottom
left
değerlerini ayarlamak için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
<BoxControl
values={{
top: attributes.containerPadding.top,
left: attributes.containerPadding.left,
right: attributes.containerPadding.right,
bottom: attributes.containerPadding.bottom,
}}
onChange={(value) => setAttributes({ containerPadding: value })}
label={__('Blok container elemanının padding değerleri:', 'sc-cards')}
/>
Kodun Kullanımı
- Önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “containerPadding” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"containerPadding": {
"type": "object",
"default": {"top": "5px", "left": "10px", "right": "10px", "bottom": "5px"}
},
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor. - Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz.
- Önce, bileşeni
- Yaptığımız ayar,
block.json
dosyasındakiattribute
objesinde saklanır.- Buradan bu ayarı getirmek için,
Edit({ attributes, setAttributes })
vesave({attributes})
fonksiyonları içerisinde iken şu değişkenleri kullanırız:attributes.containerPadding.left,
attributes.containerPadding.right,
attributes.containerPadding.top,
attributes.containerPadding.bottom
- Buradan bu ayarı getirmek için,
BaseControl Bileşeninin Kullanımı
BorderControl : Kenar Kontrolü
! Bu bileşen henüz deneme aşamasındadır (experimental). İlerleyen dönemlerde, bileşenin yapısında, bloğunuzun hata vermesine sebep olabilecek değişiklikler olabilir.
Görevi
- Birimleri ile birlikte, bir HTML kutusunun;
border
değerlerini ayarlamak için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
// Burası fonksiyonun return ifadesinden önce girilir.
const colors = [
{ name: 'Blue 20', color: '#72aee6' },
{ name: 'Black', color: '#000000' },
{ name: 'White', color: '#ffffff' },
{ name: 'Gray 20', color: '#dddddd' },
];
// Bileşenin kodu - return kısmında yer alır
<BorderControl
colors={ colors }
label={ __( 'Kenarlık', 'sc-cards' ) }
onChange={(value) => setAttributes({ containerBorder: value })}
value={ attributes.containerBorder }
/>
Kodun Kullanımı
- Önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “containerBorder” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"containerBorder": {
"type": "object",
"default": {}
}
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
__experimentalBorderControl as BorderControl
} from '@wordpress/components';
- Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz.
- Yaptığımız ayar,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken ve CSS border özelliğinde şu şekilde kullanırız:
- Bu ayarı
border: `${attributes.containerBorder.width} ${attributes.containerBorder.style} ${attributes.containerBorder.color}`
BoxControl : Kenar Kontrolü
! Bu bileşen henüz deneme aşamasındadır (experimental). İlerleyen dönemlerde, bileşenin yapısında, bloğunuzun hata vermesine sebep olabilecek değişiklikler olabilir.
Görevi
- Birimleri ile birlikte, bir HTML kutusunun;
top
right
bottom
left
değerlerini ayarlamak için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
// Bu kısım fonksiyonun return kısmından önce girilir.
const units = [
{ value: 'px', label: 'px', default: 0 },
{ value: '%', label: '%', default: 10 },
{ value: 'em', label: 'em', default: 0 },
]
// Fonksiyonun return kısmında verilir.
<BoxControl
label={ __( 'Padding', 'sc-cards' ) }
values={ attributes.containerPadding }
onChange={(value) => setAttributes({ containerPadding: value })}
/>
Kodun Kullanımı
- Önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “containerPadding” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"containerPadding": {
"type": "object",
"default": {"top": "5px", "left": "10px", "right": "10px", "bottom": "5px"}
},
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
__experimentalBoxControl as BoxControl
} from '@wordpress/components';
- Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz.
- Yaptığımız ayar,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken ve CSS padding özelliğinde şu şekilde kullanırız:
- Bu ayarı:
padding: `${attributes.containerPadding.top} ${attributes.containerPadding.right} ${attributes.containerPadding.bottom} ${attributes.containerPadding.left}`
BoxControl Bileşeninin Kullanımı
Button : Buton Kontrolü
Görevi
- Bir buton yaratmak için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
// Bu kısım fonksiyonun return kısmından önce girilir.
const buttonClickFunction = () => {
setAttributes({ayar: "değeri"})
}
// Fonksiyonun return kısmında verilir.
<Button
disabled={false}
isDestructive={false}
variant="primary"
onClick={() => buttonClickFunction()}
> { __( 'Kaydet', 'sc-cards' ) }
</Button>
variant
özelliği şu değerleri alabilir:- “primary” : Mavi buton
- “secondary” : Gri buton
- “tertiary” : Text butonu
- “link” : Butonu bir a elemanına dönüştürür.
- Bu seçenek ile birlikte
href
vetarget
özelliği de gelir.
- Bu seçenek ile birlikte
isDestructive={true}
: Bu özellik buton rengini kırmızı yapar
Kodun Kullanımı
- Eğer tıklama bir ayar değişikliği yapacaksa önce,
block.json
dosyasına, bu bileşenin ayarını hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “ayar” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"ayar": {
"type": "string",
"default": ""
},
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
Button
} from '@wordpress/components';
- Sonra bileşeni, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içine yerleştiriyoruz.
- Buton tıklaması ile yaptığımız ayar,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde kullanırız:
- Bu ayarı:
attributes.ayar
Button Bileşeninin Kullanımı
ButtonGroup : Buton Grubu Kontrolü
Görevi
- Bir buton grubu yaratmak için kullanılır.
Görünümü
- Şöyle görünür:
Kod Yapısı
<ButtonGroup>
<Button variant="secondary">{__('%100', 'sc-cards')}</Button>
<Button variant="secondary">{__('%75', 'sc-cards')}</Button>
<Button variant="secondary">{__('%50', 'sc-cards')}</Button>
<Button variant="secondary">{__('%25', 'sc-cards')}</Button>
</ButtonGroup>
Kodun Kullanımı
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
Button,
ButtonGroup
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
ButtonGroup Bileşeninin Kullanımı
Card : Kart Kontrolü
Görevi
- Bir kart yaratmak için kullanılır.
- Oluşturulan kart şu alt bileşenlere sahip olabilir:
- CardHeader
- CardBody
- CardDivider
- CardMedia
- CardFooter
Görünümü
- Şöyle görünür:
Kod Yapısı
<Card
elevation="10"
>
<CardHeader>Kart Başlığı</CardHeader>
<CardBody>Kart gövdesi gövdesi kart gövdesi</CardBody>
<CardDivider />
<CardBody>Kart gövdesi gövdesi kart gövdesi</CardBody>
<CardMedia>
<img src="https://www.fillmurray.com/640/360" />
</CardMedia>
<CardFooter>Kart footer kısmı</CardFooter>
</Card>
elevation="10"
: özelliği gölge miktarını kontrol eder.- Bu özelliğin yanında şunlar da eklenebilir:
size (string)
xSmall, small, medium, large
değerlerinden birini alabilir.
isRounded
(boolean)
- Varsayılan olarak
true
değerini alır.
- Varsayılan olarak
isBorderless
(boolean)
- Varsayılan olarak
false
değerini alır.
- Varsayılan olarak
Kodun Kullanımı
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
Card,
CardBody,
CardDivider,
CardFooter,
CardHeader,
CardMedia,
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
Card Bileşeninin Kullanımı
CheckboxControl : Seçim Kutusu Kontrolü
Görevi
- Bir checkbox (kontrol) kutucuğu oluşturur.
Görünümü
- İşaretlenmeden önce:
- İşaretlendikten sonra:
Kod Yapısı
<CheckboxControl
label={__('Fiyatı göster', 'sc-cards')}
help={__('Burayı işaretlersen ürün fiyatları görünecek', 'sc-cards')}
checked={ attributes.showPrices }
onChange={(value) => setAttributes({ showPrices: value })}
/>
indeterminate = true
özelliği belirsiz olmasını sağlar:
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “showPrices” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"showPrices": {
"type": "boolean",
"default": false
}
}
- Sonra,
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
CheckboxControl
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
- Yaptığımız seçim,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.showPrices
CheckboxControl Bileşeninin Kullanımı
ColorIndicator : Renk Göstergesi Kontrolü
Görevi
- Belirli bir rengi gösterir.
Görünümü
- Şöyle görünür:
Kod Yapısı
<PanelRow>
{__('Kullanılan renk: ', 'sc-cards')}
<ColorIndicator colorValue="yellow" />
</PanelRow>
Kodun Kullanımı
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
ColorIndicator
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
ColorIndicator Bileşeninin Kullanımı
ColorPalette : Renk Paleti Kontrolü
Görevi
- Bir renk paleti oluşturur.
- Dilerseniz bir “varsayılan renkler” listesi de oluşturabilirsiniz.
Görünümü
- Şöyle görünür:
Kod Yapısı
// Burası fonksiyonun return bölümünden önce yer alır.
const colors = [
{ name: 'red', color: '#f00' },
{ name: 'white', color: '#fff' },
{ name: 'blue', color: '#00f' },
{ name: 'grey', color: '#ddd' },
{ name: 'yellow', color: 'yellow' },
{ name: 'brown', color: 'brown' },
{ name: 'orange', color: 'orange' },
{ name: 'renk 2', color: 'rgb(100,100,100)' },
];
// Fonksiyonun return bölümünde yer alır.
<ColorPalette
colors={ colors }
value={ attributes.selectedColor }
onChange={ ( color ) => setAttributes( {selectedColor: color} ) }
/>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “selectedColor” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"selectedColor": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
ColorPalette
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
- Yaptığımız seçim,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.selectedColor
ColorPalette Bileşeninin Kullanımı
ColorPicker : Renk Seçici Kontrolü
Görevi
- Bir renk seçicisi oluşturur.
Görünümü
- Şöyle görünür:
Kod Yapısı
<ColorPicker
color={attributes.selectedColor}
onChange={ ( color ) => setAttributes( {selectedColor: color} ) }
enableAlpha={true}
defaultValue="#000"
/>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “selectedColor” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"selectedColor": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
ColorPicker
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
- Yaptığımız seçim,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.selectedColor
ColorPicker Bileşeninin Kullanımı
ComboboxControl : Süzmeli Seçim Kontrolü
Görevi
- Çok uzun bir listeden bir seçim yapmamız gerekiyorsa, girdiğimiz harflere göre seçenekleri süzerek getirir.
Görünümü
- İlk defa tıklandığında:
- Bir harf girildiğinde:
Kod Yapısı
// Burası fonksiyonun return bölümünden önce yer alır.
const options = [
{
value: 'xsmall',
label: 'xSmall',
},
{
value: 'small',
label: 'Small',
},
{
value: 'normal',
label: 'Normal',
},
{
value: 'medium',
label: 'Medium',
},
{
value: 'large',
label: 'Large',
},
{
value: 'xlarge',
label: 'xLarge',
},
{
value: 'huge',
label: 'Huge',
},
];
const setFilteredOptions = (options, inputValue) => {
options.filter( ( option ) =>
option.label
.toLowerCase()
.startsWith( inputValue.toLowerCase() )
)
}
// Fonksiyonun return bölümünde yer alır.
<ComboboxControl
label={__('Font Size', 'sc-cards')}
value={ attributes.fontSize }
onChange={ (value) => setAttributes({fontSize: value}) }
options={ options }
onFilterValueChange={(inputValue) => setFilteredOptions(options, inputValue)}
/>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak bir değişken oluşturalım.- Ben bu değişkenin adını “selectedColor” yaptım, siz dilediğiniz bir isim verebilirsiniz.
block.json
"attributes": {
"fontSize": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
ComboboxControl
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz.
- Yaptığımız seçim,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.fontSize
ColorPalette Bileşeninin Kullanımı
Dashicon : Dashicon Kontrolü
Görevi
- Bir icon oluşturur.
Görünümü
- Şöyle görünür:
Kod Yapısı
- Dashiconlar, WordPress ile birlikte gelirler. Bütün dashiconlara buradan ulaşabilirsiniz.
- Mesela, “
dashicon-admin-home
” ikonunu kullanmak için aşağıdaki kod yapısını kullanırız:
- Mesela, “
<Dashicon icon="admin-home" />
Kodun Kullanımı
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
- Önce, bileşeni
@wordpress/components
ten import etmemiz gerekiyor:
block-settings.js
import {
Dashicon
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
bileşeninin içinde döndürüyoruz. - NOT: Dashicon bileşeni sadece editörde çalışır, temada görünmez.
Dashicon Bileşeninin Kullanımı
DateTimePicker : Tarih ve Saat Seçme Kontrolü
Görevi
- Tarih seçmek için bir takvim oluşturur.
- Seçtiğimiz tarihi bir string olarak ve aşağıda verilen formatta döndürür:
2022-06-29T22:49:00
Görünümü
- Şöyle görünür:
Kod Yapısı
// Burası fonksiyonun return bölümünden önce yer alır.
const date = new Date();
// Fonksiyonun return bölümünde yer alır.
<DateTimePicker
currentDate={ attributes.date ? attributes.date : date }
onChange={ ( newDate ) => setAttributes( {date: newDate} ) }
is12Hour={ false }
__nextRemoveHelpButton
__nextRemoveResetButton
/>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak iki değişken oluşturalım.- Ben bu değişkenin adını “date” yaptım, siz dilediğiniz isimleri verebilirsiniz.
block.json
"attributes": {
"date": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
B
ileşenini@wordpress/
den import etmemiz gerekiyor:components
block-settings.js
import {
DateTimePicker
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<PanelRow> </PanelRow>
elemanının içinde döndürüyoruz.
- Seçtiğimiz tarih,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.date
DateTimePicker Bileşeninin Kullanımı
Disabled : Devre Dışı Bırakma Kontrolü
Görevi
- Bir form elemanını devre dışı bırakır.
- Kullanımı daha iyi anlayabilmek için bu bileşen ile birlikte şu bileşenleri de kullanacağız:
<TextControl>
<Button>
Görünümü
- Resim yüklemeden öncesi:
Kod Yapısı
<PanelRow>
<Disabled isDisabled={attributes.disabled}>
<TextControl
label={__('Adınızı girin:', 'sc-cards')}
onChange={ () => {} }
placeholder={__('Adım SOYADIM', 'sc-cards')}
style={ { opacity: attributes.disabled ? 0.5 : 1 } }
/>
</Disabled>
</PanelRow>
<PanelRow>
<Button
variant="secondary"
onClick={ () => setAttributes({disabled: !attributes.disabled}) }
isDestructive={true}
>
{__('Değer girişini kapat', 'sc-cards')}
</Button>
</PanelRow>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak iki değişken oluşturalım.- Ben bu değişkenin adını “date” yaptım, siz dilediğiniz isimleri verebilirsiniz.
block.json
"attributes": {
"date": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
B
ileşenini@wordpress/
den import etmemiz gerekiyor:components
block-settings.js
import {
DateTimePicker
} from '@wordpress/components';
- Sonra bileşenin kodunu
<PalenBody> </PanelBody>
bileşeni içinde döndürüyoruz.
- Seçimimiz,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.disabled
Disabled Bileşeninin Kullanımı
MediaUpload : Resim Yükleme Kontrolü
Görevi
- WordPress’in medya yükleyicisi yardımıyla bir resim yüklemek için kullanılır.
<MediaUploadCheck>
<Button>
bileşenleri ile birlikte kullandık.
Görünümü
- Resim yüklemeden öncesi:
- Resim yükledikten sonrası:
Kod Yapısı
// Burası fonksiyonun return bölümünden önce yer alır.
const removeMedia = () => {
setAttributes({
mediaId: 0,
mediaUrl: ''
});
}
const onSelectMedia = (media) => {
setAttributes({
mediaId: media.id,
mediaUrl: media.url
});
}
// Fonksiyonun return bölümünde yer alır.
<div className="sc-editor-post-featured-image">
<MediaUploadCheck>
<MediaUpload
onSelect={onSelectMedia}
value={attributes.mediaId}
allowedTypes={['image']}
render={({ open }) => (
<Button
className={attributes.mediaId == 0 ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview'}
onClick={open}
>
{attributes.mediaId == 0 && __('Resim seç', 'sc-cards')}
{attributes.mediaId != 0 &&
<fieldset className='stcnnt-img-preview'>
<img src={attributes.mediaUrl} />
</fieldset>
}
</Button>
)}
/>
</MediaUploadCheck>
{attributes.mediaId != 0 &&
<MediaUploadCheck>
<MediaUpload
title={__('Değiştir', 'sc-cards')}
value={attributes.mediaId}
onSelect={onSelectMedia}
allowedTypes={['image']}
render={({ open }) => (
<Button className="sc-change-img" variant="secondary" onClick={open}>{__('Resmi değiştir', 'sc-cards')}</Button>
)}
/>
</MediaUploadCheck>
}
{attributes.mediaId != 0 &&
<MediaUploadCheck>
<Button
variant="secondary"
isDestructive={true}
onClick={removeMedia}>{__('Kaldır', 'sc-cards')}</Button>
</MediaUploadCheck>
}
</div>
Kodun Kullanımı
- Öncelikle,
block.json
dosyasına, bu bileşenin seçimini hatırlayacak iki değişken oluşturalım.- Ben bu değişkenlerin adını “mediaId” ve “mediaUrl” yaptım, siz dilediğiniz isimleri verebilirsiniz.
block.json
"attributes": {
"mediaId": {
"type": "number",
"default": 0
},
"mediaUrl": {
"type": "string",
"default": ""
}
}
block-settings.js
sayfasına bileşen için gerekli kodları ekleyelim.
MediaUpload
veMediaUploadCheck
bileşenlerini@wordpress/block-editor
den import etmemiz gerekiyor:Button
bileşenini@wordpress/
den import etmemiz gerekiyor:components
block-settings.js
import {
MediaUpload,
MediaUploadCheck
} from '@wordpress/block-editor';
import {
Button
} from '@wordpress/components';
- Sonra bileşenin kodunu, block ayarları için oluşturduğumuz bir
<div className="sc-editor-post-featured-image"> </div>
elemanının içinde döndürüyoruz. - Sonra, resim yükleyicisinin editörde güzel görünmesi için,
editor.scss
dosyasına bir kaç SCSS kodluyoruz.
editor.scss
.sc-editor-post-featured-image
{
width: 100%;
text-align: center;
.editor-post-featured-image__toggle, .editor-post-featured-image__preview img
{
border: 3px solid #ddd;
padding: 5px;
margin: 0 auto;
}
.stcnnt-img-preview
{
display: flex;
justify-content: center;
align-items: center;
height: 150px;
overflow: hidden;
img {
object-fit: cover;
height: 150px;
};
margin-bottom: 5px;
}
.sc-change-img{
margin-right: 5px;
}
}
- Seçtiğimiz resmin url adresi,
block.json
dosyasındakiattribute
objesinde saklanır.- Bu ayarı oradan getirip kullanmak için:
Edit({ attributes, setAttributes })
veyasave({attributes})
fonksiyonları içerisinde iken şu şekilde çağırırız:
- Bu ayarı oradan getirip kullanmak için:
attributes.mediaUrl