37
Почему стоит участвовать в разработке WordPress Сергей Бирюков WordCamp Russia 2015

Looking into WordPress Core, WordCamp Russia 2015

Embed Size (px)

Citation preview

Page 1: Looking into WordPress Core, WordCamp Russia 2015

Почему стоит участвоватьв разработке WordPress

Сергей Бирюков

WordCamp Russia 2015

Page 2: Looking into WordPress Core, WordCamp Russia 2015

Обо мне

Сергей Бирюков● Разработчик ядра WordPress

core.trac.wordpress.org● Локализатор WP в России

ru.wordpress.org

sergeybiryukov.ru@SergeyBiryukov

Page 3: Looking into WordPress Core, WordCamp Russia 2015

Зачем смотреть,как устроен WordPress?

Page 4: Looking into WordPress Core, WordCamp Russia 2015

Как следитьза разработкой WordPress?

Page 5: Looking into WordPress Core, WordCamp Russia 2015

● make.wordpress.org/core/● wp-svn● wp-trac

Page 6: Looking into WordPress Core, WordCamp Russia 2015
Page 7: Looking into WordPress Core, WordCamp Russia 2015

wp-admin/edit-form-advanced.php

wp-admin/includes/meta-boxes.php

wp-includes/default-filters.php

Page 8: Looking into WordPress Core, WordCamp Russia 2015

grep, ack, cmd-f и т.д.

Page 9: Looking into WordPress Core, WordCamp Russia 2015

PhpStorm 8

Page 10: Looking into WordPress Core, WordCamp Russia 2015

PHPXref

Page 11: Looking into WordPress Core, WordCamp Russia 2015

Codex

Page 12: Looking into WordPress Core, WordCamp Russia 2015

developer.wordpress.org

Page 13: Looking into WordPress Core, WordCamp Russia 2015
Page 14: Looking into WordPress Core, WordCamp Russia 2015

add_action( 'publish_post' )

Page 15: Looking into WordPress Core, WordCamp Russia 2015

add_filter( 'all', function( $stuff ) {echo '<code>' .

current_filter() .'</code>';

return $stuff;});

Page 16: Looking into WordPress Core, WordCamp Russia 2015

add_filter( 'gettext',function( $new, $old, $domain ) {

if ( 'Set featured image' === $old ) {if ( 'company' === get_post_type() ) {

$new = __( 'Set company logo', 'mydomain' );}

}

return $new;}, 10, 3 );

Page 17: Looking into WordPress Core, WordCamp Russia 2015

add_filter( 'admin_post_thumbnail_html',function( $output, $post_id ) {

if ( 'company' === get_post_type( $post_id ) ) {$output =

str_replace( __( 'Set featured image' ),'Select / Upload a company logo', $output );

$output =str_replace( __( 'Remove featured image' ),'Remove company logo', $output );

}

return $output;}, 10, 2 );

Page 18: Looking into WordPress Core, WordCamp Russia 2015

Для фильтров и действийважен контекст

Page 19: Looking into WordPress Core, WordCamp Russia 2015

apply_filters( 'media_view_strings', $strings, $post )

Page 20: Looking into WordPress Core, WordCamp Russia 2015

remove_post_type_support()

Page 21: Looking into WordPress Core, WordCamp Russia 2015

Экран редактирования —одна большая форма

Page 22: Looking into WordPress Core, WordCamp Russia 2015

<textarea name="excerpt" id="attachment_caption"><?php echo $post->post_excerpt; ?>

</textarea>

Page 23: Looking into WordPress Core, WordCamp Russia 2015

Произвольные таксономии

Page 24: Looking into WordPress Core, WordCamp Russia 2015

add_action( 'save_post', function( $post_id, $post ) {// Не забываем проверить nonce и привилегииif ( isset( $_POST['my_tax_ui'] ) ) {

// array_map()$terms = $_POST['my_tax_ui'];wp_set_object_terms( $post_id, $terms, 'my_tax' );

} else {wp_delete_object_term_relationships( $post_id, 'my_tax' );

}}, 10, 2 );

Page 25: Looking into WordPress Core, WordCamp Russia 2015
Page 26: Looking into WordPress Core, WordCamp Russia 2015

<select name="tax_input['my_tax'][]">

Page 27: Looking into WordPress Core, WordCamp Russia 2015

add_action( 'save_post', function( $post_id, $post ) {// Не забываем проверить nonce и привилегииIf ( ! isset( $_POST['my_tax_ui'] ) ) {

wp_delete_object_term_relationships($post_id, 'my_tax'

);}

}, 10, 2 );

Page 28: Looking into WordPress Core, WordCamp Russia 2015

<input type="hidden" name="tax_input['my_tax'][]" value="0" />

Page 29: Looking into WordPress Core, WordCamp Russia 2015
Page 30: Looking into WordPress Core, WordCamp Russia 2015

add_rewrite_endpoint( 'export', EP_PAGES )

site.com/some-page/export/site.com/some-page/export/json/

Page 31: Looking into WordPress Core, WordCamp Russia 2015

get_query_var( 'export' )

Page 32: Looking into WordPress Core, WordCamp Russia 2015

add_filter( 'request', function( $vars ) {if ( isset( $vars['export'] )

&& empty( $vars['export'] ) ) {$vars['export'] = '1';

}

return $vars;});

Page 33: Looking into WordPress Core, WordCamp Russia 2015

get_query_var( 'export', null )

Page 34: Looking into WordPress Core, WordCamp Russia 2015

Сложные запросы

Page 35: Looking into WordPress Core, WordCamp Russia 2015

'tax_query' => array('relation' => 'AND',array(

'taxonomy' => 'age','terms' => array( '5' ),

),array(

'relation' => 'OR',array(

'taxonomy' => 'academic_skills','terms' => array( 'reading', 'writing' ),

),array(

'taxonomy' => 'skills','terms' => array( 'focus', 'flexibility' ),

),),

)

Page 36: Looking into WordPress Core, WordCamp Russia 2015

term_id + taxonomy = term_taxonomy_id

Page 37: Looking into WordPress Core, WordCamp Russia 2015

sergeybiryukov.ru

@SergeyBiryukov

Спасибо! Вопросы?