Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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', 
...
Tworzenie nowego panelu 
$wp_customize->add_section( ‘test_section', array( 
'priority' => 10, 
'capability' => 'customize...
Tworzenie nowego panelu
Opisy opcji 
$wp_customize->add_control( 'option', array( 
'label' => __(‘Option label’, ‘theme-slug’), 
'section' => 'con...
Nowe rodzaje kontrolek 
Nowe rodzaje to: textarea oraz każda możliwa wartość 
atrybutu type dla elementu input 
! 
! 
! 
!...
Atrybuty dla pól <input> 
$wp_customize->add_control('content_width', array( 
'label' => __( 'Layout width', 'twentyfourte...
Ukrywanie kontrolek 
Możemy wyświetlić kontrolkę tylko na stronie głównej 
podglądu korzystając z własnej funkcji: 
functi...
Ukrywanie kontrolek 
$wp_customize->add_control('content_width', array( 
'label' => __( 'Layout width', 'twentyfourteen' )...
Ukrywanie kontrolek 
Tworząc własną klasę kontrolki można po 
prostu nadpisać funkcję active_callback 
class WP_Customize_...
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 T...
Zmiany w TinyMCE 
Nowy filtr wp_editor_settings pozwala zmodyfikować 
ustawienia edytora. 
! 
Przyjmuje dwa argumenty: 
! ...
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 
spos...
Wielokrotne ORDER BY 
w get_posts i WP_Query można od teraz sortować 
elementy według wielu kryteriów naraz z różnym 
spos...
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => 'author', 
'order' => ‘DESC' 
)); 
! 
$titles = wp_list_pluc...
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => 'author', 
'order' => ‘DESC' 
)); 
! 
$titles = wp_list_pluc...
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => ‘author post_title’, 
'order' => ‘DESC' 
)); 
! 
$titles = w...
Wielokrotne ORDER BY 
$posts = get_posts(array( 
'orderby' => array( 
'author' => 'DESC', 
'post_title' => ‘ASC' 
) 
)); 
...
like_escape jest passé 
• Należy używać wpdb::esc_like 
• powinno się jej używać przed wywołaniami metod 
wpdb::prepare i ...
Nowy wygląd wyszukiwarki 
wtyczek
Tworzenie ikony dla wtyczki 
Ikona powinna znaleźć się w katalogu assets jako: 
! 
! 
assets/icon-256x256.(png|jpg) 
! 
as...
Inne warte uwagi 
zmiany
Lepsze wsparcie SSL 
• Cookies ustawiane przez WordPressa mają teraz 
ustawiany parametr secure. 
• Dzięki temu cookies ut...
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 = uploa...
Nowa opcja w 
wp_dropdown_categories 
• “option_none_value” - określa wartość ustawianą 
dla opcji odpowiadającego nie wyb...
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 ...
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 3.9.2: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($...
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 3.9.2: 
! 
$posts = get_posts(); 
$post_titles = wp_list_pluck($...
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts...
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts...
wp_list_pluck ma nowy 
argument $index_key 
W WordPressie 4.0 dzięki nowemu argumentowi $index_key: 
! 
$posts = get_posts...
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 ak...
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'...
Zrezygnowano z funkcji extract 
function shortcode_func($atts) { 
$a = shortcode_atts(array( 
'foo' => 'something', 
'bar'...
Zrezygnowano z funkcji extract 
function shortcode_func($atts) { 
$a = shortcode_atts(array( 
'foo' => 'something', 
'bar'...
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
Upcoming SlideShare
Loading in …5
×

WordPress 4.0 - co nowego dla programistów?

1,888 views

Published on

Lista najważniejszych zmian dla programistów, które pojawiły się w WordPressie w wersji 4.0

Published in: Technology
  • Be the first to comment

WordPress 4.0 - co nowego dla programistów?

  1. 1. WordPress 4.0 Co nowego dla programistów? ! Tomasz Dziuda @ WordPress 4.0 Release Party
  2. 2. Prezentacja bazuje na porównaniu kodu WP 3.9.2 i WP 4.0.0 RC
  3. 3. Najważniejsze zmiany
  4. 4. Zmiany w ekranie personalizacji
  5. 5. Panele Panel Sekcja Kontrolka Kontrolka Kontrolka Sekcja
  6. 6. Panele • Nowa klasa WP_Customize_Panel! • Klasa WP_Customize_Section - ma nowe pole $panel
  7. 7. Nowe metody klasy WP_Customize_Manager
  8. 8. Nowe metody klasy WP_Customize_Manager get_panel($id) ! ! !
  9. 9. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) ! !
  10. 10. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) !
  11. 11. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) containers()
  12. 12. Nowe metody klasy WP_Customize_Manager get_panel($id) add_panel($id, $args) remove_panel($id) containers() panels()
  13. 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. 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', ));
  15. 15. Tworzenie nowego panelu
  16. 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. 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. 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. 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. 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. 21. Ukrywanie kontrolek Tworząc własną klasę kontrolki można po prostu nadpisać funkcję active_callback class WP_Customize_Control
  22. 22. Nowe funkcje
  23. 23. Nowe funkcje is_customize_preview()! !
  24. 24. Nowe funkcje is_customize_preview()! is_widget_rendered(widget_id)!
  25. 25. Nowe funkcje is_customize_preview()! is_widget_rendered(widget_id)! is_sidebar_rendered(sidebar_id)
  26. 26. Zmiany w TinyMCE Nowa wtyczka wpautoresize Od teraz edytor automatycznie się skaluje więc powyższy element zniknął
  27. 27. Zmiany w TinyMCE Nowa wtyczka colorpicker
  28. 28. Zmiany w TinyMCE Nowa funkcja get_editor_stylesheets() Funkcja ta zwraca nam listę plików CSS załadowanych w edytorze TinyMCE
  29. 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. 30. Zmiany w TinyMCE W funkcji wp_editor możemy w parametrze tinymce określić opcję wp_autoresize_on
  31. 31. Wielokrotne ORDER BY
  32. 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. 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. 34. Wielokrotne ORDER BY $posts = get_posts(array( 'orderby' => 'author', 'order' => ‘DESC' )); ! $titles = wp_list_pluck($posts, ‘post_title'); ! ! ! ! ! ! ! ! ! !
  35. 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. 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. 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. 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
  39. 39. Nowy wygląd wyszukiwarki wtyczek
  40. 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/
  41. 41. Inne warte uwagi zmiany
  42. 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.
  43. 43. Zmiany w current_user_can
  44. 44. Zmiany w current_user_can edit_theme_options = customize ! ! !
  45. 45. Zmiany w current_user_can edit_theme_options = customize! ! install_themes = upload_themes !
  46. 46. Zmiany w current_user_can edit_theme_options = customize! ! install_themes = upload_themes! ! install_plugins = upload_plugins
  47. 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. 48. Nowa funkcja attachment_url_to_postid • Argument: $url • zwraca ID posta na podstawie podanego URL-a załącznika
  49. 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. 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. 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. 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. 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. 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. 55. Nowy filtr wp_list_comments_args • Argument: $args • pozwala przetworzyć argumenty dla funkcji wp_list_comments
  56. 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. 57. Nowy filtr wp_title_parts • pozwala filtrować elementy tytułu • Jako argument otrzymuje explode($t_sep, $title)
  58. 58. Ciekawostki
  59. 59. Thickbox po otwarciu popupa dodaje klasę modal-open w <body>
  60. 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. 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. 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. 63. Trudniej stracić zmiany wprowadzone w ekranie personalizacji…
  64. 64. … oraz przy zarządzaniu menu
  65. 65. Nowe Dashicons dashicons-carrot dashicons-grid-view dashicons-calendar-alt dashicons-index-card
  66. 66. Pytania?
  67. 67. • @dziudek • dziudek@gmail.com • wp.dziudek.pl Kontakt

×