Post on 17-Jun-2015
description
WordPress 4.0Co 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 kontrolekNowe 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 TinyMCENowa wtyczka wpautoresize
Od teraz edytor automatycznie się skaluje więc powyższy element zniknął
Zmiany w TinyMCENowa 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
Wytyczne dla tworzonych ikon: !
http://make.wordpress.org/core/2014/08/21/introducing-plugin-icons-in-the-plugin-installer/
Ikona powinna znaleźć się w katalogu assets jako: !!
assets/icon-256x256.(png|jpg)!
assets/icon-128x128.(png|jpg)!
assets/icon.svg
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-grid-viewdashicons-carrot
dashicons-calendar-alt dashicons-index-card
Pytania?
• @dziudek
• dziudek@gmail.com
• wp.dziudek.pl
Kontakt