SlideShare a Scribd company logo
WordPress 4.0 
Co nowego dla programistów? 
! 
Tomasz Dziuda @ WordPress 4.0 Release Party
Prezentacja bazuje na porównaniu kodu 
WP 3.9.2 i WP 4.0.0 RC
Najważniejsze zmiany
Zmiany w ekranie 
personalizacji
Panele 
Panel 
Sekcja 
Kontrolka 
Kontrolka 
Kontrolka 
Sekcja
Panele 
• Nowa klasa WP_Customize_Panel! 
• Klasa WP_Customize_Section - ma nowe pole 
$panel
Nowe metody klasy 
WP_Customize_Manager
Nowe metody klasy 
WP_Customize_Manager 
get_panel($id) 
! 
! 
!
Nowe metody klasy 
WP_Customize_Manager 
get_panel($id) 
add_panel($id, $args) 
! 
!
Nowe metody klasy 
WP_Customize_Manager 
get_panel($id) 
add_panel($id, $args) 
remove_panel($id) 
!
Nowe metody klasy 
WP_Customize_Manager 
get_panel($id) 
add_panel($id, $args) 
remove_panel($id) 
containers()
Nowe metody klasy 
WP_Customize_Manager 
get_panel($id) 
add_panel($id, $args) 
remove_panel($id) 
containers() 
panels()
Tworzenie nowego panelu 
$wp_customize->add_panel( ‘test_panel', array( 
'priority' => 10, 
'capability' => 'customize', 
'theme_supports' => '', 
'title' => ‘Test Panel', 
'description' => ‘Simple test panel', 
));
Tworzenie nowego panelu 
$wp_customize->add_section( ‘test_section', array( 
'priority' => 10, 
'capability' => 'customize', 
'theme_supports' => '', 
'title' => ‘Test Section', 
'description' => ‘Simple test section', 
'panel' => ‘test_panel', 
));
Tworzenie nowego panelu
Opisy opcji 
$wp_customize->add_control( 'option', array( 
'label' => __(‘Option label’, ‘theme-slug’), 
'section' => 'content', 
'type' => 'select', 
'description' => ‘Option description', 
'choices' => array( 
'0' => __(‘Enabled', ‘theme-slug'), 
'1' => __('Disabled', ‘theme-slug'), 
'2' => __('Automatic', ‘theme-slug'), 
), 
)); 
Pole description istnieje od teraz nie tylko 
w sekcjach ale i w kontrolkach:
Nowe rodzaje kontrolek 
Nowe rodzaje to: textarea oraz każda możliwa wartość 
atrybutu type dla elementu input 
! 
! 
! 
! 
! 
! 
! 
! 
Istniejące: text, checkbox, radio, select, dropdown-pages
Atrybuty dla pól <input> 
$wp_customize->add_control('content_width', array( 
'label' => __( 'Layout width', 'twentyfourteen' ), 
'section' => 'layout', 
'type' => 'range', 
'input_attrs' => array( 
'min' => 720 , 
'max' => 1600 
) 
));
Ukrywanie kontrolek 
Możemy wyświetlić kontrolkę tylko na stronie głównej 
podglądu korzystając z własnej funkcji: 
function theme_slug_show_control() { 
return is_home(); 
}
Ukrywanie kontrolek 
$wp_customize->add_control('content_width', array( 
'label' => __( 'Layout width', 'twentyfourteen' ), 
'section' => 'layout', 
'type' => 'range', 
'input_attrs' => array( 
'min' => 720 , 
'max' => 1600 
), 
‘active_callback' => ‘theme_slug_show_control’ 
));
Ukrywanie kontrolek 
Tworząc własną klasę kontrolki można po 
prostu nadpisać funkcję active_callback 
class WP_Customize_Control
Nowe funkcje
Nowe funkcje 
is_customize_preview()! 
!
Nowe funkcje 
is_customize_preview()! 
is_widget_rendered(widget_id)!
Nowe funkcje 
is_customize_preview()! 
is_widget_rendered(widget_id)! 
is_sidebar_rendered(sidebar_id)
Zmiany w TinyMCE 
Nowa wtyczka wpautoresize 
Od teraz edytor automatycznie się skaluje więc 
powyższy element zniknął
Zmiany w TinyMCE 
Nowa wtyczka colorpicker
Zmiany w TinyMCE 
Nowa funkcja get_editor_stylesheets() 
Funkcja ta zwraca nam listę plików CSS załadowanych w 
edytorze TinyMCE
Zmiany w TinyMCE 
Nowy filtr wp_editor_settings pozwala zmodyfikować 
ustawienia edytora. 
! 
Przyjmuje dwa argumenty: 
! 
$settings - tablica ustawień edytora 
$editor_id - identyfikator edytora
Zmiany w TinyMCE 
W funkcji wp_editor możemy 
w parametrze tinymce określić 
opcję wp_autoresize_on
Wielokrotne ORDER BY
Wielokrotne ORDER BY 
w get_posts i WP_Query można od teraz sortować 
elementy według wielu kryteriów naraz z różnym 
sposobem sortowania
Wielokrotne ORDER BY 
w get_posts i WP_Query można od teraz sortować 
elementy według wielu kryteriów naraz z różnym 
sposobem sortowania! 
argument orderby podajemy jako tablicę postaci 
pole => sposób sortowania
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => 'author', 
'order' => ‘DESC' 
)); 
! 
$titles = wp_list_pluck($posts, ‘post_title'); 
! 
! 
! 
! 
! 
! 
! 
! 
! 
!
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => 'author', 
'order' => ‘DESC' 
)); 
! 
$titles = wp_list_pluck($posts, ‘post_title'); 
! 
Zwróci nam: 
! 
Array 
( 
[0] => Hello world! 
[1] => Draft 
[2] => A lorem ipsum dolor 
[3] => BB Lorem ipsum dolor 
[4] => CCCC Lorem ipsum 
)
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => ‘author post_title’, 
'order' => ‘DESC' 
)); 
! 
$titles = wp_list_pluck($posts, ‘post_title'); 
! 
Zwróci nam: 
! 
Array 
( 
[0] => Hello world! 
[1] => Draft 
[2] => CCCC Lorem ipsum 
[3] => BB Lorem ipsum dolor 
[4] => A lorem ipsum dolor 
)
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => array( 
'author' => 'DESC', 
'post_title' => ‘ASC' 
) 
)); 
! 
$titles = wp_list_pluck($posts, ‘post_title'); 
! 
Zwróci nam: 
! 
Array 
( 
[0] => A lorem ipsum dolor 
[1] => BB Lorem ipsum dolor 
[2] => CCCC Lorem ipsum 
[3] => Draft 
[4] => Hello world! 
)
like_escape jest passé 
• Należy używać wpdb::esc_like 
• powinno się jej używać przed wywołaniami metod 
wpdb::prepare i wpdb::esc_sql
Nowy wygląd wyszukiwarki 
wtyczek
Tworzenie ikony dla wtyczki 
Ikona powinna znaleźć się w katalogu assets jako: 
! 
! 
assets/icon-256x256.(png|jpg) 
! 
assets/icon-128x128.(png|jpg) 
! 
assets/icon.svg 
Wytyczne dla tworzonych ikon: 
! 
http://make.wordpress.org/core/2014/08/21/introducing-plugin-icons-in-the-plugin-installer/
Inne warte uwagi 
zmiany
Lepsze wsparcie SSL 
• Cookies ustawiane przez WordPressa mają teraz 
ustawiany parametr secure. 
• Dzięki temu cookies utworzone po HTTPS nie 
zadziałają po HTTP i na odwrót.
Zmiany w current_user_can
Zmiany w current_user_can 
edit_theme_options = customize 
! 
! 
!
Zmiany w current_user_can 
edit_theme_options = customize! 
! 
install_themes = upload_themes 
!
Zmiany w current_user_can 
edit_theme_options = customize! 
! 
install_themes = upload_themes! 
! 
install_plugins = upload_plugins
Nowa opcja w 
wp_dropdown_categories 
• “option_none_value” - określa wartość ustawianą 
dla opcji odpowiadającego nie wybraniu kategorii 
(domyślnie -1)
Nowa funkcja 
attachment_url_to_postid 
• Argument: $url 
• zwraca ID posta na podstawie podanego URL-a załącznika
Nowa funkcja 
get_comments_number_text 
• Argumenty: $zero, $one, $more 
• Działa w zasadzie tak samo jak comments_number tylko 
zwraca rezultat zamiast go bezpośrednio wypisywać
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 3.9.2: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($posts, ‘post_title'); 
! 
! 
! 
! 
! 
!
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 3.9.2: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($posts, ‘post_title'); 
! 
Zwróci nam: 
! 
Array ( 
[0] => Draft 
[1] => Hello world! 
)
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); 
! 
! 
! 
! 
! 
! 
! 
! 
!
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); 
! 
Możemy otrzymać tablicę z indeksami równymi ID postów: 
! 
Array ( 
[5] => Draft 
[1] => Hello world! 
) 
!
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); 
! 
Możemy otrzymać tablicę z indeksami równymi ID postów: 
! 
Array ( 
[5] => Draft 
[1] => Hello world! 
) 
! 
W wypadku gdy pole nie istnieje, element trafi na koniec tablicy.
Nowy filtr 
wp_list_comments_args 
• Argument: $args 
• pozwala przetworzyć argumenty dla funkcji 
wp_list_comments
Nowy filtr 
term_search_min_chars 
• Argumenty: $chars, $taxonomy_object, $search 
• określa liczbę znaków potrzebną do aktywowania 
podpowiadania w tagach (domyślnie: 2 znaki)
Nowy filtr wp_title_parts 
• pozwala filtrować elementy tytułu 
• Jako argument otrzymuje explode($t_sep, $title)
Ciekawostki
Thickbox po otwarciu popupa 
dodaje klasę modal-open w <body>
Zrezygnowano z funkcji extract 
function shortcode_func($atts) { 
$a = shortcode_atts(array( 
'foo' => 'something', 
'bar' => 'something else', 
), $atts ); 
! 
} 
! 
add_shortcode('shortcode', 'shortcode_func');
Zrezygnowano z funkcji extract 
function shortcode_func($atts) { 
$a = shortcode_atts(array( 
'foo' => 'something', 
'bar' => 'something else', 
), $atts ); 
extract($a); 
return "foo = “.$foo; 
} 
! 
add_shortcode('shortcode', 'shortcode_func');
Zrezygnowano z funkcji extract 
function shortcode_func($atts) { 
$a = shortcode_atts(array( 
'foo' => 'something', 
'bar' => 'something else', 
), $atts ); 
return "foo = ".$a[‘foo’]; 
} 
! 
add_shortcode('shortcode', 'shortcode_func');
Trudniej stracić zmiany wprowadzone 
w ekranie personalizacji…
… oraz przy zarządzaniu menu
Nowe Dashicons 
dashicons-carrot dashicons-grid-view 
dashicons-calendar-alt dashicons-index-card
Pytania?
• @dziudek 
• dziudek@gmail.com 
• wp.dziudek.pl 
Kontakt

More Related Content

Similar to WordPress 4.0 - co nowego dla programistów?

Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp PolskaWykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
Tomasz Dziuda
 
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp KrakówWykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
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ź
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Łódź
Tomasz Dziuda
 
Poznaj wp-config.php "Ukryte" możliwości.
Poznaj wp-config.php  "Ukryte" możliwości.Poznaj wp-config.php  "Ukryte" możliwości.
Poznaj wp-config.php "Ukryte" możliwości.
Marcin Jóźwiak
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Maciej Ziarko
 
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
 
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
Rafał Osiński
 
CSS Workflow, czyli jak pracować z CSS-em?
CSS Workflow, czyli jak pracować z CSS-em?CSS Workflow, czyli jak pracować z CSS-em?
CSS Workflow, czyli jak pracować z CSS-em?
WordCamp Polska
 
Laravel workshops 1
Laravel workshops 1Laravel workshops 1
Laravel workshops 1
Kamil Fojuth
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
Dawid Urbański
 
TWIG - niezłe widoki dla PHP
TWIG - niezłe widoki dla PHPTWIG - niezłe widoki dla PHP
TWIG - niezłe widoki dla PHP
Piotr Gabryjeluk
 
Motywy WooCommerce dla początkujących
Motywy WooCommerce dla początkującychMotywy WooCommerce dla początkujących
Motywy WooCommerce dla początkujących
Maciej Swoboda
 
Wordpress dla każdego
Wordpress dla każdegoWordpress dla każdego
Wordpress dla każdego
Jacek Tomaszewski
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
Laravel Poland MeetUp
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
Sages
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
Jacek Okrojek
 
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
 
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
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktyce
PHPstokPHPstok
 

Similar to WordPress 4.0 - co nowego dla programistów? (20)

Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp PolskaWykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
Wykorzystanie możliwości ekranu personalizacji motywu - WordCamp Polska
 
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp KrakówWykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
Wykorzystanie możliwości ekranu personalizacji motywu - WordUp Kraków
 
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ź
 
Poznaj wp-config.php "Ukryte" możliwości.
Poznaj wp-config.php  "Ukryte" możliwości.Poznaj wp-config.php  "Ukryte" możliwości.
Poznaj wp-config.php "Ukryte" możliwości.
 
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarkaThymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
Thymeleaf - szablony, które bez przetworzenia zrozumie twoja przeglądarka
 
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
 
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
Jak stworzyć wielojęzyczny portal z milionem wyświetleń na WordPressie?
 
CSS Workflow, czyli jak pracować z CSS-em?
CSS Workflow, czyli jak pracować z CSS-em?CSS Workflow, czyli jak pracować z CSS-em?
CSS Workflow, czyli jak pracować z CSS-em?
 
Laravel workshops 1
Laravel workshops 1Laravel workshops 1
Laravel workshops 1
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
TWIG - niezłe widoki dla PHP
TWIG - niezłe widoki dla PHPTWIG - niezłe widoki dla PHP
TWIG - niezłe widoki dla PHP
 
Motywy WooCommerce dla początkujących
Motywy WooCommerce dla początkującychMotywy WooCommerce dla początkujących
Motywy WooCommerce dla początkujących
 
Wordpress dla każdego
Wordpress dla każdegoWordpress dla każdego
Wordpress dla każdego
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
Skrypty powłoki
Skrypty powłokiSkrypty powłoki
Skrypty powłoki
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
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
 
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
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktyce
 

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 Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
Tomasz Dziuda
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
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
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
Tomasz Dziuda
 
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
Tomasz Dziuda
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
Tomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
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 Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
 
Statycznie czy dynamicznie?
Statycznie czy dynamicznie?Statycznie czy dynamicznie?
Statycznie czy dynamicznie?
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 

WordPress 4.0 - co nowego dla programistów?

  • 1. WordPress 4.0 Co nowego dla programistów? ! Tomasz Dziuda @ WordPress 4.0 Release Party
  • 2. Prezentacja bazuje na porównaniu kodu WP 3.9.2 i WP 4.0.0 RC
  • 4. Zmiany w ekranie personalizacji
  • 5. Panele Panel Sekcja Kontrolka Kontrolka Kontrolka Sekcja
  • 6. Panele • Nowa klasa WP_Customize_Panel! • Klasa WP_Customize_Section - ma nowe pole $panel
  • 7. Nowe metody klasy WP_Customize_Manager
  • 8. Nowe metody klasy WP_Customize_Manager get_panel($id) ! ! !
  • 9. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) ! !
  • 10. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) !
  • 11. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) containers()
  • 12. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) containers() panels()
  • 13. Tworzenie nowego panelu $wp_customize->add_panel( ‘test_panel', array( 'priority' => 10, 'capability' => 'customize', 'theme_supports' => '', 'title' => ‘Test Panel', 'description' => ‘Simple test panel', ));
  • 14. Tworzenie nowego panelu $wp_customize->add_section( ‘test_section', array( 'priority' => 10, 'capability' => 'customize', 'theme_supports' => '', 'title' => ‘Test Section', 'description' => ‘Simple test section', 'panel' => ‘test_panel', ));
  • 16. Opisy opcji $wp_customize->add_control( 'option', array( 'label' => __(‘Option label’, ‘theme-slug’), 'section' => 'content', 'type' => 'select', 'description' => ‘Option description', 'choices' => array( '0' => __(‘Enabled', ‘theme-slug'), '1' => __('Disabled', ‘theme-slug'), '2' => __('Automatic', ‘theme-slug'), ), )); Pole description istnieje od teraz nie tylko w sekcjach ale i w kontrolkach:
  • 17. Nowe rodzaje kontrolek Nowe rodzaje to: textarea oraz każda możliwa wartość atrybutu type dla elementu input ! ! ! ! ! ! ! ! Istniejące: text, checkbox, radio, select, dropdown-pages
  • 18. Atrybuty dla pól <input> $wp_customize->add_control('content_width', array( 'label' => __( 'Layout width', 'twentyfourteen' ), 'section' => 'layout', 'type' => 'range', 'input_attrs' => array( 'min' => 720 , 'max' => 1600 ) ));
  • 19. Ukrywanie kontrolek Możemy wyświetlić kontrolkę tylko na stronie głównej podglądu korzystając z własnej funkcji: function theme_slug_show_control() { return is_home(); }
  • 20. Ukrywanie kontrolek $wp_customize->add_control('content_width', array( 'label' => __( 'Layout width', 'twentyfourteen' ), 'section' => 'layout', 'type' => 'range', 'input_attrs' => array( 'min' => 720 , 'max' => 1600 ), ‘active_callback' => ‘theme_slug_show_control’ ));
  • 21. Ukrywanie kontrolek Tworząc własną klasę kontrolki można po prostu nadpisać funkcję active_callback class WP_Customize_Control
  • 24. Nowe funkcje is_customize_preview()! is_widget_rendered(widget_id)!
  • 25. Nowe funkcje is_customize_preview()! is_widget_rendered(widget_id)! is_sidebar_rendered(sidebar_id)
  • 26. Zmiany w TinyMCE Nowa wtyczka wpautoresize Od teraz edytor automatycznie się skaluje więc powyższy element zniknął
  • 27. Zmiany w TinyMCE Nowa wtyczka colorpicker
  • 28. Zmiany w TinyMCE Nowa funkcja get_editor_stylesheets() Funkcja ta zwraca nam listę plików CSS załadowanych w edytorze TinyMCE
  • 29. Zmiany w TinyMCE Nowy filtr wp_editor_settings pozwala zmodyfikować ustawienia edytora. ! Przyjmuje dwa argumenty: ! $settings - tablica ustawień edytora $editor_id - identyfikator edytora
  • 30. Zmiany w TinyMCE W funkcji wp_editor możemy w parametrze tinymce określić opcję wp_autoresize_on
  • 32. Wielokrotne ORDER BY w get_posts i WP_Query można od teraz sortować elementy według wielu kryteriów naraz z różnym sposobem sortowania
  • 33. Wielokrotne ORDER BY w get_posts i WP_Query można od teraz sortować elementy według wielu kryteriów naraz z różnym sposobem sortowania! argument orderby podajemy jako tablicę postaci pole => sposób sortowania
  • 34. Wielokrotne ORDER BY $posts = get_posts(array( 'orderby' => 'author', 'order' => ‘DESC' )); ! $titles = wp_list_pluck($posts, ‘post_title'); ! ! ! ! ! ! ! ! ! !
  • 35. Wielokrotne ORDER BY $posts = get_posts(array( 'orderby' => 'author', 'order' => ‘DESC' )); ! $titles = wp_list_pluck($posts, ‘post_title'); ! Zwróci nam: ! Array ( [0] => Hello world! [1] => Draft [2] => A lorem ipsum dolor [3] => BB Lorem ipsum dolor [4] => CCCC Lorem ipsum )
  • 36. Wielokrotne ORDER BY $posts = get_posts(array( 'orderby' => ‘author post_title’, 'order' => ‘DESC' )); ! $titles = wp_list_pluck($posts, ‘post_title'); ! Zwróci nam: ! Array ( [0] => Hello world! [1] => Draft [2] => CCCC Lorem ipsum [3] => BB Lorem ipsum dolor [4] => A lorem ipsum dolor )
  • 37. Wielokrotne ORDER BY $posts = get_posts(array( 'orderby' => array( 'author' => 'DESC', 'post_title' => ‘ASC' ) )); ! $titles = wp_list_pluck($posts, ‘post_title'); ! Zwróci nam: ! Array ( [0] => A lorem ipsum dolor [1] => BB Lorem ipsum dolor [2] => CCCC Lorem ipsum [3] => Draft [4] => Hello world! )
  • 38. like_escape jest passé • Należy używać wpdb::esc_like • powinno się jej używać przed wywołaniami metod wpdb::prepare i wpdb::esc_sql
  • 40. Tworzenie ikony dla wtyczki Ikona powinna znaleźć się w katalogu assets jako: ! ! assets/icon-256x256.(png|jpg) ! assets/icon-128x128.(png|jpg) ! assets/icon.svg Wytyczne dla tworzonych ikon: ! http://make.wordpress.org/core/2014/08/21/introducing-plugin-icons-in-the-plugin-installer/
  • 42. Lepsze wsparcie SSL • Cookies ustawiane przez WordPressa mają teraz ustawiany parametr secure. • Dzięki temu cookies utworzone po HTTPS nie zadziałają po HTTP i na odwrót.
  • 44. Zmiany w current_user_can edit_theme_options = customize ! ! !
  • 45. Zmiany w current_user_can edit_theme_options = customize! ! install_themes = upload_themes !
  • 46. Zmiany w current_user_can edit_theme_options = customize! ! install_themes = upload_themes! ! install_plugins = upload_plugins
  • 47. Nowa opcja w wp_dropdown_categories • “option_none_value” - określa wartość ustawianą dla opcji odpowiadającego nie wybraniu kategorii (domyślnie -1)
  • 48. Nowa funkcja attachment_url_to_postid • Argument: $url • zwraca ID posta na podstawie podanego URL-a załącznika
  • 49. Nowa funkcja get_comments_number_text • Argumenty: $zero, $one, $more • Działa w zasadzie tak samo jak comments_number tylko zwraca rezultat zamiast go bezpośrednio wypisywać
  • 50. wp_list_pluck ma nowy argument $index_key W WordPressie 3.9.2: ! $posts = get_posts(); $post_titles = wp_list_pluck($posts, ‘post_title'); ! ! ! ! ! !
  • 51. wp_list_pluck ma nowy argument $index_key W WordPressie 3.9.2: ! $posts = get_posts(); $post_titles = wp_list_pluck($posts, ‘post_title'); ! Zwróci nam: ! Array ( [0] => Draft [1] => Hello world! )
  • 52. wp_list_pluck ma nowy argument $index_key W WordPressie 4.0 dzięki nowemu argumentowi $index_key: ! $posts = get_posts(); $post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); ! ! ! ! ! ! ! ! !
  • 53. wp_list_pluck ma nowy argument $index_key W WordPressie 4.0 dzięki nowemu argumentowi $index_key: ! $posts = get_posts(); $post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); ! Możemy otrzymać tablicę z indeksami równymi ID postów: ! Array ( [5] => Draft [1] => Hello world! ) !
  • 54. wp_list_pluck ma nowy argument $index_key W WordPressie 4.0 dzięki nowemu argumentowi $index_key: ! $posts = get_posts(); $post_titles = wp_list_pluck($posts, ‘post_title’, ‘ID’); ! Możemy otrzymać tablicę z indeksami równymi ID postów: ! Array ( [5] => Draft [1] => Hello world! ) ! W wypadku gdy pole nie istnieje, element trafi na koniec tablicy.
  • 55. Nowy filtr wp_list_comments_args • Argument: $args • pozwala przetworzyć argumenty dla funkcji wp_list_comments
  • 56. Nowy filtr term_search_min_chars • Argumenty: $chars, $taxonomy_object, $search • określa liczbę znaków potrzebną do aktywowania podpowiadania w tagach (domyślnie: 2 znaki)
  • 57. Nowy filtr wp_title_parts • pozwala filtrować elementy tytułu • Jako argument otrzymuje explode($t_sep, $title)
  • 59. Thickbox po otwarciu popupa dodaje klasę modal-open w <body>
  • 60. Zrezygnowano z funkcji extract function shortcode_func($atts) { $a = shortcode_atts(array( 'foo' => 'something', 'bar' => 'something else', ), $atts ); ! } ! add_shortcode('shortcode', 'shortcode_func');
  • 61. Zrezygnowano z funkcji extract function shortcode_func($atts) { $a = shortcode_atts(array( 'foo' => 'something', 'bar' => 'something else', ), $atts ); extract($a); return "foo = “.$foo; } ! add_shortcode('shortcode', 'shortcode_func');
  • 62. Zrezygnowano z funkcji extract function shortcode_func($atts) { $a = shortcode_atts(array( 'foo' => 'something', 'bar' => 'something else', ), $atts ); return "foo = ".$a[‘foo’]; } ! add_shortcode('shortcode', 'shortcode_func');
  • 63. Trudniej stracić zmiany wprowadzone w ekranie personalizacji…
  • 64. … oraz przy zarządzaniu menu
  • 65. Nowe Dashicons dashicons-carrot dashicons-grid-view dashicons-calendar-alt dashicons-index-card
  • 67. • @dziudek • dziudek@gmail.com • wp.dziudek.pl Kontakt