SlideShare a Scribd company logo
Wykorzystanie możliwości 
ekranu personalizacji motywu 
Tomasz Dziuda
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Dlaczego warto z niego 
korzystać?
• Łatwa implementacja opcji motywu
• Łatwa implementacja opcji motywu 
• Podgląd zmian strony “na żywo”
• Łatwa implementacja opcji motywu 
• Podgląd zmian strony “na żywo” 
• Możliwość łatwego przetestowania opcji 
motywu
• Łatwa implementacja opcji motywu 
• Podgląd zmian strony “na żywo” 
• Możliwość łatwego przetestowania opcji 
motywu 
• Użytkownik nie musi uczyć się sposobu 
konfiguracji motywu
Zarządzanie widżetami
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Panel widżetów pojawi się 
tylko gdy wyświetlana strona 
zawiera panele boczne
Ważne pojęcia
Menadżer Personalizacji
Menadżer Personalizacji 
Panel
Menadżer Personalizacji 
Panel 
Sekcja
Menadżer Personalizacji 
Panel 
Sekcja 
Kontrolka
Menadżer Personalizacji 
Panel 
Sekcja 
Kontrolka 
Ustawienie
Menadżer Personalizacji 
Panel 
Sekcja 
Kontrolka 
Kontekst Ustawienie
Menadżer Personalizacji
• Znany szerzej jako $wp_customize
• Znany szerzej jako $wp_customize 
• Pozwala zarządzać elementami ekranu personalizacji
• Znany szerzej jako $wp_customize 
• Pozwala zarządzać elementami ekranu personalizacji 
• Tworzy automatycznie domyślne sekcje ekranu 
personalizacji: colors, title_tagline, header_image, 
background_image, nav, static_front_page
• Znany szerzej jako $wp_customize 
• Pozwala zarządzać elementami ekranu personalizacji 
• Tworzy automatycznie domyślne sekcje ekranu 
personalizacji: colors, title_tagline, header_image, 
background_image, nav, static_front_page (o ile są 
one wspierane przez motyw).
Ustawienie
$wp_customize->add_setting( 
! 
! 
! 
! 
! 
! 
);
$wp_customize->add_setting( 
‘mytheme_bgcolor’, 
! 
! 
! 
! 
! 
);
$wp_customize->add_setting( 
‘mytheme_bgcolor’, 
array( 
‘default’ => ‘#fff’, 
! 
! 
) 
);
$wp_customize->add_setting( 
‘mytheme_bgcolor’, 
array( 
‘default’ => ‘#fff’, 
‘sanitize_callback’ => ‘sanitize_hex_color’, 
! 
) 
);
$wp_customize->add_setting( 
‘mytheme_bgcolor’, 
array( 
‘default’ => ‘#fff’, 
‘sanitize_callback’ => ‘sanitize_hex_color’, 
‘type’ => ‘theme_mod’, 
! 
) 
);
$wp_customize->add_setting( 
‘mytheme_bgcolor’, 
array( 
‘default’ => ‘#fff’, 
‘sanitize_callback’ => ‘sanitize_hex_color’, 
‘type’ => ‘theme_mod’, 
‘transport’ => ‘refresh’ 
) 
);
Panele, Sekcje i Kontrolki
$wp_customize->add_panel( 
! 
! 
! 
! 
! 
);
$wp_customize->add_panel( 
‘panel_name’, 
! 
! 
! 
! 
);
$wp_customize->add_panel( 
‘panel_name’, 
array( 
‘priority’ => 10, 
‘title’ => ‘My Panel’, 
‘description’ => ‘Simple panel description’ 
) 
);
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
$wp_customize->add_section( 
! 
! 
! 
! 
! 
! 
);
$wp_customize->add_section( 
'section_name', 
! 
! 
! 
! 
! 
);
$wp_customize->add_section( 
'section_name', 
array( 
‘priority' => 10, 
‘title' => ‘My Section', 
‘description' => ‘Section description', 
'panel' => 'panel_name' 
) 
);
$wp_customize->add_section( 
'section_name', 
array( 
‘priority' => 10, 
‘title' => ‘My Section', 
‘description' => ‘Section description', 
'panel' => 'panel_name' 
) 
);
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
$wp_customize->add_control( 
! 
! 
! 
! 
! 
! 
);
$wp_customize->add_control( 
'setting_name', 
! 
! 
! 
! 
! 
! 
);
$wp_customize->add_control( 
'setting_name', 
array( 
'type' => 'text', 
‘section' => ‘section_name', 
‘priority' => 10, 
‘label' => ‘Option label', 
'description' => ‘Option description' 
) 
);
$wp_customize->add_control( 
'setting_name', 
array( 
'type' => 'text', 
‘section' => ‘section_name', 
‘priority' => 10, 
‘label' => ‘Option label', 
'description' => ‘Option description' 
) 
);
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Modyfikacja istniejących 
elementów
$wp_customize->get_section(‘colors')->description = 
__( 
'Background may only be visible on wide screens.’, 
‘twentyfourteen' 
);
$wp_customize->get_setting(‘blogname')->transport 
! 
= 'postMessage';
$wp_customize->remove_control('blogname')
Kontekst
• Kontekst określamy tylko dla kontrolek
• Kontekst określamy tylko dla kontrolek 
• Kontekst działa oddolnie na sekcje i panele
• Kontekst określamy tylko dla kontrolek 
• Kontekst działa oddolnie na sekcje i panele 
• Sekcja bez kontrolek będzie niewidoczna 
tak samo jak panel bez sekcji
$wp_customize->add_control( 
'setting_name', 
array( 
'type' => 'text', 
‘section' => ‘section_name', 
‘priority' => 10, 
‘label' => ‘Option label', 
'description' => ‘Option description’, 
! 
) 
);
$wp_customize->add_control( 
'setting_name', 
array( 
'type' => 'text', 
‘section' => ‘section_name', 
‘priority' => 10, 
‘label' => ‘Option label', 
'description' => ‘Option description’, 
'active_callback' => 'is_front_page' 
) 
);
Jak wykorzystać 
kontekst?
• Ukrywanie nadmiaru opcji
• Ukrywanie nadmiaru opcji 
• Opcje dedykowane dla konkretnych 
podstron
• Ukrywanie nadmiaru opcji 
• Opcje dedykowane dla konkretnych 
podstron 
• Określanie zależności pomiędzy opcjami
function mytheme_show_font_field($control) { 
! 
}
function mytheme_show_font_field($control) { 
$option = $control->manager->get_setting(‘mytheme_font'); 
! 
}
function mytheme_show_font_field($control) { 
$option = $control->manager->get_setting(‘mytheme_font'); 
! 
return $option->value() == 'google'; 
}
Ważne akcje
• customize_register - wykorzystywana do 
konfiguracji opcji ekranu personalizacji
• customize_register - wykorzystywana do 
konfiguracji opcji ekranu personalizacji 
• wp_head - używana do wyświetlania kodu 
modyfikującego stronę na bazie opcji motywu
• customize_register - wykorzystywana do 
konfiguracji opcji ekranu personalizacji 
• wp_head - używana do wyświetlania kodu 
modyfikującego stronę na bazie opcji motywu 
• customize_preview_init - może być 
wykorzystana do wyświetlania kodu potrzebnego 
jedynie w ekranie personalizacji
• customize_register - wykorzystywana do 
konfiguracji opcji ekranu personalizacji 
• wp_head - używana do wyświetlania kodu 
modyfikującego stronę na bazie opcji motywu 
• customize_preview_init - może być 
wykorzystana do wyświetlania kodu potrzebnego 
jedynie w ekranie personalizacji 
• customize_controls_enqueue_scripts - pozwala 
dodać skrypty i style dla ekranu personalizacji
Rodzaje kontrolek
text 
radio 
checkbox 
textarea 
select 
dropdown-pages
WP_Customize_Image_Control WP_Customize_Color_Control
A gdy potrzebujemy 
więcej kontrolek?
$wp_customize->add_control( 
‘mytheme_layout_width’, 
array( 
'type' => 'range', 
'section' => 'layout', 
'label' => ‘Layout width', 
'input_attrs' => array( 
'min' => 720, 
'max' => 1280, 
'step' => 1, 
'class' => ‘layout-width-control‘ 
) 
) 
);
$wp_customize->add_control( 
‘mytheme_layout_width’, 
array( 
'type' => 'range', 
'section' => 'layout', 
'label' => ‘Layout width', 
'input_attrs' => array( 
'min' => 720, 
'max' => 1280, 
'step' => 1, 
'class' => ‘layout-width-control‘ 
) 
) 
);
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Choć jest mały 
problem…
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Własne kontrolki
class My_Customize_Textarea_Control extends WP_Customize_Control { 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
public function render_content() { 
?> 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
<?php 
} 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
public function render_content() { 
?> 
<label> 
<?php if(!empty($this->label)) : ?> 
<span class=“customize-control-title"> 
<?php echo esc_html( $this->label ); ?> 
</span> 
<?php endif; ?> 
! 
! 
! 
! 
! 
! 
! 
</label> 
<?php 
} 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
public function render_content() { 
?> 
<label> 
<?php if(!empty($this->label)) : ?> 
<span class=“customize-control-title"> 
<?php echo esc_html( $this->label ); ?> 
</span> 
<?php endif; ?> 
<?php if(!empty($this->description)) : ?> 
<span class="description customize-control-description”> 
<?php echo $this->description ; ?> 
</span> 
<?php endif; ?> 
! 
! 
</label> 
<?php 
} 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
public function render_content() { 
?> 
<label> 
<?php if(!empty($this->label)) : ?> 
<span class=“customize-control-title"> 
<?php echo esc_html( $this->label ); ?> 
</span> 
<?php endif; ?> 
<?php if(!empty($this->description)) : ?> 
<span class="description customize-control-description”> 
<?php echo $this->description ; ?> 
</span> 
<?php endif; ?> 
<textarea rows=“5" cols=“20” <?php $this->link(); ?>> 
<?php echo esc_textarea($this->value()); ?> 
</textarea> 
</label> 
<?php 
} 
}
class My_Customize_Textarea_Control extends WP_Customize_Control { 
public $type = 'textarea'; 
public function render_content() { 
?> 
<label> 
<?php if(!empty($this->label)) : ?> 
<span class=“customize-control-title"> 
<?php echo esc_html( $this->label ); ?> 
</span> 
<?php endif; ?> 
<?php if(!empty($this->description)) : ?> 
<span class="description customize-control-description”> 
<?php echo $this->description ; ?> 
</span> 
<?php endif; ?> 
<textarea rows=“5" cols=“20” <?php $this->link(); ?>> 
<?php echo esc_textarea($this->value()); ?> 
</textarea> 
</label> 
<?php 
} 
}
$wp_customize->add_control( 
! 
! 
! 
! 
! 
! 
! 
! 
! 
);
$wp_customize->add_control( 
new My_Customize_Textarea_Control( 
! 
! 
! 
! 
! 
! 
! 
) 
);
$wp_customize->add_control( 
new My_Customize_Textarea_Control( 
$wp_customize, 
‘theme_copyright_text’, 
! 
! 
! 
! 
! 
) 
);
$wp_customize->add_control( 
new My_Customize_Textarea_Control( 
$wp_customize, 
‘theme_copyright_text’, 
array( 
'label' => __(‘Copyright text', 'theme'), 
'section' => 'features', 
'settings' => ‘theme_copyright_text’, 
'priority' => 2 
) 
) 
);
Podgląd zmian na żywo
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
$wp_customize->add_setting( 
'portfolio_primary_color', 
array( 
'default' => '#5cc1a9', 
'capability' => 'edit_theme_options', 
'transport' => 'postMessage', 
'sanitize_callback' => 'sanitize_hex_color' 
) 
);
$wp_customize->add_setting( 
'portfolio_primary_color', 
array( 
'default' => '#5cc1a9', 
'capability' => 'edit_theme_options', 
'transport' => 'postMessage', 
'sanitize_callback' => 'sanitize_hex_color' 
) 
);
(function($){ 
! 
! 
! 
! 
! 
! 
! 
})(jQuery);
(function($){ 
wp.customize( 
'portfolio_primary_color', 
function(value) { 
! 
! 
} 
); 
})(jQuery);
(function($){ 
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind(function(to) { 
}); 
} 
); 
})(jQuery);
(function($){ 
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind(function(to) { 
jQuery('a').css('color', to || '#5cc1a9'); 
}); 
} 
); 
})(jQuery);
Porada optymalizacyjna
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind( function( to ) { 
! 
! 
! 
! 
! 
! 
! 
! 
} 
); 
});
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind( function( to ) { 
to = to || '#5cc1a9'; 
! 
! 
! 
! 
! 
} 
); 
});
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind( function( to ) { 
to = to || '#5cc1a9'; 
var new_css = 'a { color: ' + to + '; }'; 
! 
! 
! 
! 
! 
} 
); 
});
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind( function( to ) { 
to = to || '#5cc1a9'; 
var new_css = 'a { color: ' + to + '; }'; 
if($('#new-css').length) { 
$('#new-css').remove(); 
} 
! 
} 
); 
});
wp.customize( 
'portfolio_primary_color', 
function(value) { 
value.bind( function( to ) { 
to = to || '#5cc1a9'; 
var new_css = 'a { color: ' + to + '; }'; 
if($('#new-css').length) { 
$('#new-css').remove(); 
} 
$(document).find('head') 
.append($('<style id="new-css">' + new_css + '</style>')); 
} 
); 
});
Kontakt 
Lead Developer @ GavickPro 
@dziudek 
http://dziudek.pl 
dziudek@gmail.com
Pytania ?

More Related Content

More from Tomasz Dziuda

Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
Tomasz Dziuda
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
Tomasz Dziuda
 
Trello w praktyce
Trello w praktyceTrello w praktyce
Trello w praktyce
Tomasz Dziuda
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
Tomasz Dziuda
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendium
Tomasz Dziuda
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Tomasz Dziuda
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
Tomasz Dziuda
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
Tomasz Dziuda
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
Tomasz Dziuda
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Tomasz Dziuda
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
Tomasz Dziuda
 
Jak nadążyć za światem front endu
Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front endu
Tomasz Dziuda
 
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławStatycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET Wrocław
Tomasz Dziuda
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Tomasz Dziuda
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Tomasz Dziuda
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
Tomasz Dziuda
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
Tomasz Dziuda
 
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
Tomasz Dziuda
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
Tomasz Dziuda
 

More from Tomasz Dziuda (20)

Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
 
Trello w praktyce
Trello w praktyceTrello w praktyce
Trello w praktyce
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendium
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
 
Jak nadążyć za światem front endu
Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front endu
 
Statycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET WrocławStatycznie czy dynamicznie - infoMEET Wrocław
Statycznie czy dynamicznie - infoMEET Wrocław
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
 
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 

Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź