WordPress 4.0 - co nowego dla programistów?

Post on 17-Jun-2015

1.270 views 2 download

description

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

Transcript of WordPress 4.0 - co nowego dla programistów?

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