60

Малоизвестные функции в WordPress [WordCamp Russia 2014]

Embed Size (px)

DESCRIPTION

Малоизвестные функции в WordPress [WordCamp Russia 2014]

Citation preview

Page 1: Малоизвестные функции в WordPress [WordCamp Russia 2014]

«МАЛОИЗВЕСТНЫЕ ФУНКЦИИ В WORDPRESS»

АЛЕКСАНДР СТРИХАCTO PINGBULL LLC

Page 2: Малоизвестные функции в WordPress [WordCamp Russia 2014]

Велокодер

Page 3: Малоизвестные функции в WordPress [WordCamp Russia 2014]

WordPress Man

Page 4: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$email = "[email protected]";

ПРОВЕРИТЬ E-MAILЗАДАЧА

Page 5: Малоизвестные функции в WordPress [WordCamp Russia 2014]

if( preg_match( "/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email ) ) { // valid}

$email = "[email protected]";

ПРОВЕРИТЬ E-MAILЗАДАЧА

Page 6: Малоизвестные функции в WordPress [WordCamp Russia 2014]

if( preg_match( "/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email ) ) { // valid}

if( filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { // valid}

$email = "[email protected]";

ПРОВЕРИТЬ E-MAILЗАДАЧА

Page 7: Малоизвестные функции в WordPress [WordCamp Russia 2014]

if( preg_match( "/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email ) ) { // valid}

if( filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { // valid}

if( is_email( $email ) ) { // valid}

$email = "[email protected]";

ПРОВЕРИТЬ E-MAILЗАДАЧА

Page 8: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$email = "[email protected]";

ЗАЩИТИТЬ E-MAIL ОТ СПАМАЗАДАЧА

Page 9: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$safe_email = '';for ( $i = 0; $i < strlen( $email ); $i++ ) { $safe_email .= '&#' . ord( $email[ $i ] ) . ';';}

$email = "[email protected]";

ЗАЩИТИТЬ E-MAIL ОТ СПАМАЗАДАЧА

Page 10: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$safe_email = '';for ( $i = 0; $i < strlen( $email ); $i++ ) { $safe_email .= '&#' . ord( $email[ $i ] ) . ';';}

$safe_email = antispambot( $email );

$email = "[email protected]";

ЗАЩИТИТЬ E-MAIL ОТ СПАМАЗАДАЧА

Page 11: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$text = "My email: [email protected]\n My blog: http://example.com";

СДЕЛАТЬ ССЫЛКИ В ТЕКСТЕ КЛИКАБЕЛЬНЫМИЗАДАЧА

Page 12: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$clickable_text = preg_replace( '!(((f|ht)tp(s)?://)[-a-zA-а-яА-Я()0-9@:%_+.~#?&;//=]+)!i' , '<a href="$1">$1</a>', $text );

$text = "My email: [email protected]\n My blog: http://example.com";

СДЕЛАТЬ ССЫЛКИ В ТЕКСТЕ КЛИКАБЕЛЬНЫМИЗАДАЧА

Page 13: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$clickable_text = preg_replace( '!(((f|ht)tp(s)?://)[-a-zA-а-яА-Я()0-9@:%_+.~#?&;//=]+)!i' , '<a href="$1">$1</a>', $text );

$clickable_text = make_clickable( $text );

$text = "My email: [email protected]\n My blog: http://example.com";

СДЕЛАТЬ ССЫЛКИ В ТЕКСТЕ КЛИКАБЕЛЬНЫМИЗАДАЧА

Page 14: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$text = "Tweet by <a href='http://example.com'>William</a>";

ОТКРЫВАТЬ ССЫЛКИ В НОВОМ ОКНЕЗАДАЧА

Page 15: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$external_clickable_text = preg_replace( '/<a (.+?)>/i', "<a $1 target='_blank' rel='external'>", $text );

$text = "Tweet by <a href='http://example.com'>William</a>";

ОТКРЫВАТЬ ССЫЛКИ В НОВОМ ОКНЕЗАДАЧА

Page 16: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$external_clickable_text = preg_replace( '/<a (.+?)>/i', "<a $1 target='_blank' rel='external'>", $text );

$external_clickable_text = popuplinks( $text );

$text = "Tweet by <a href='http://example.com'>William</a>";

ОТКРЫВАТЬ ССЫЛКИ В НОВОМ ОКНЕЗАДАЧА

Page 17: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$posts = get_posts();

ПОЛУЧИТЬ МАССИВ АТРИБУТОВ ИЗ КОЛЛЕКЦИИЗАДАЧА

Page 18: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$titles = array();foreach( $posts as $post ) { $titles[] = $post->post_title; }

$posts = get_posts();

ПОЛУЧИТЬ МАССИВ АТРИБУТОВ ИЗ КОЛЛЕКЦИИЗАДАЧА

Page 19: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$titles = array();foreach( $posts as $post ) { $titles[] = $post->post_title; }

$titles = array_map( 'array_map_callback', $posts );function array_map_callback( $post ) { return $post->post_title; }

$posts = get_posts();

ПОЛУЧИТЬ МАССИВ АТРИБУТОВ ИЗ КОЛЛЕКЦИИЗАДАЧА

Page 20: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$titles = array();foreach( $posts as $post ) { $titles[] = $post->post_title; }

$titles = array_map( 'array_map_callback', $posts );function array_map_callback( $post ) { return $post->post_title; }

$titles = wp_list_pluck( $posts, 'post_title' );

$posts = get_posts();

ПОЛУЧИТЬ МАССИВ АТРИБУТОВ ИЗ КОЛЛЕКЦИИЗАДАЧА

Page 21: Малоизвестные функции в WordPress [WordCamp Russia 2014]

ДОБАВИТЬ CHECKED АТРИБУТ К CHECKBOXЗАДАЧА

Page 22: Малоизвестные функции в WordPress [WordCamp Russia 2014]

<input type="checkbox" name="remember" value="1" <?php if ( $_POST['remember'] == 1 ){ echo 'checked="checked"'; } ?> />

ДОБАВИТЬ CHECKED АТРИБУТ К CHECKBOXЗАДАЧА

Page 23: Малоизвестные функции в WordPress [WordCamp Russia 2014]

<input type="checkbox" name="remember" value="1" <?php if ( $_POST['remember'] == 1 ){ echo 'checked="checked"'; } ?> />

<input type="checkbox" name="remember" value="1" <?php checked( $_POST['remember'] ) ?> />

ДОБАВИТЬ CHECKED АТРИБУТ К CHECKBOXЗАДАЧА

Page 24: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$published = strtotime( $post->post_date );

ВЫЧИСЛИТЬ РАЗНИЦУ ВО ВРЕМЕНИЗАДАЧА

Page 25: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$now = time();$dif = $now - $published;if ( $dif < 60 ) { // a lot of code here...

$published = strtotime( $post->post_date );

ВЫЧИСЛИТЬ РАЗНИЦУ ВО ВРЕМЕНИЗАДАЧА

Page 26: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$now = time();$dif = $now - $published;if ( $dif < 60 ) { // a lot of code here...

$string = human_time_diff( $published );

$published = strtotime( $post->post_date );

ВЫЧИСЛИТЬ РАЗНИЦУ ВО ВРЕМЕНИЗАДАЧА

Page 27: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$result = array( 'success' => true, 'data' => 'Some data' );

ВЫВЕСТИ ДАННЫЕ В JSON ФОРМАТЕЗАДАЧА

Page 28: Малоизвестные функции в WordPress [WordCamp Russia 2014]

header( 'Content-Type: application/json' );echo json_encode( $result );wp_die();

$result = array( 'success' => true, 'data' => 'Some data' );

ВЫВЕСТИ ДАННЫЕ В JSON ФОРМАТЕЗАДАЧА

Page 29: Малоизвестные функции в WordPress [WordCamp Russia 2014]

header( 'Content-Type: application/json' );echo json_encode( $result );wp_die();

wp_send_json( $result );

$result = array( 'success' => true, 'data' => 'Some data' );

ВЫВЕСТИ ДАННЫЕ В JSON ФОРМАТЕЗАДАЧА

Page 30: Малоизвестные функции в WordPress [WordCamp Russia 2014]

header( 'Content-Type: application/json' );echo json_encode( $result );wp_die();

wp_send_json( $result );

wp_send_json_success( 'Some data' );

$result = array( 'success' => true, 'data' => 'Some data' );

ВЫВЕСТИ ДАННЫЕ В JSON ФОРМАТЕЗАДАЧА

Page 31: Малоизвестные функции в WordPress [WordCamp Russia 2014]

ПОЛУЧИТЬ ДАННЫЕ СО СТОРОННЕГО РЕСУРСАЗАДАЧА

Page 32: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$tweets = file_get_contents( "https://api.twitter.com/1.1/search/tweets.json?q=%23WordPress" );

ПОЛУЧИТЬ ДАННЫЕ СО СТОРОННЕГО РЕСУРСАЗАДАЧА

Page 33: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$tweets = file_get_contents( "https://api.twitter.com/1.1/search/tweets.json?q=%23WordPress" );

$curl = curl_init();curl_setopt( $curl, CURLOPT_URL, "https://api.twitter.com/1.1/search/tweets.json" );curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );curl_setopt( $curl, CURLOPT_POST, true );curl_setopt( $curl, CURLOPT_POSTFIELDS, "q=%23WordPress" );$tweets$tweets = curl_exec( $curl );curl_close( $curl );

ПОЛУЧИТЬ ДАННЫЕ СО СТОРОННЕГО РЕСУРСАЗАДАЧА

Page 34: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$tweets = file_get_contents( "https://api.twitter.com/1.1/search/tweets.json?q=%23WordPress" );

$curl = curl_init();curl_setopt( $curl, CURLOPT_URL, "https://api.twitter.com/1.1/search/tweets.json" );curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );curl_setopt( $curl, CURLOPT_POST, true );curl_setopt( $curl, CURLOPT_POSTFIELDS, "q=%23WordPress" );$tweets$tweets = curl_exec( $curl );curl_close( $curl );

$response = wp_remote_get( "https://api.twitter.com/1.1/search/tweets.json?q=%23WordPress" );$tweets = wp_remote_retrieve_body( $response );

ПОЛУЧИТЬ ДАННЫЕ СО СТОРОННЕГО РЕСУРСАЗАДАЧА

Page 35: Малоизвестные функции в WordPress [WordCamp Russia 2014]

ОПРЕДЕЛИТЬ УСТРОЙСТВО ПОСЕТИТЕЛЯЗАДАЧА

Page 36: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$is_mobile = preg_match( "/(android|phone|blackberry|***|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"] );

ОПРЕДЕЛИТЬ УСТРОЙСТВО ПОСЕТИТЕЛЯЗАДАЧА

Page 37: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$is_mobile = preg_match( "/(android|phone|blackberry|***|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"] );

$is_mobile = wp_is_mobile();

ОПРЕДЕЛИТЬ УСТРОЙСТВО ПОСЕТИТЕЛЯЗАДАЧА

Page 38: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$video = 'https://www.youtube.com/watch?v=Lcvh0DgytH8';

ПРЕОБРАЗОВАТЬ ССЫЛКИ НА ВИДЕО В HTML КОД ПЛЕЕРАЗАДАЧА

Page 39: Малоизвестные функции в WordPress [WordCamp Russia 2014]

if( false !== mb_strpos( $video, 'youtu' ) ) { $url = parse_url( $video ); parse_str( $url[ 'query' ], $query ); $id = $query[ 'v' ]; $embed_code = "<iframe width='560' height='315' src='//www.youtube.com/embed/{$id}' frameborder='0' allowfullscreen></iframe>";}

$video = 'https://www.youtube.com/watch?v=Lcvh0DgytH8';

ПРЕОБРАЗОВАТЬ ССЫЛКИ НА ВИДЕО В HTML КОД ПЛЕЕРАЗАДАЧА

Page 40: Малоизвестные функции в WordPress [WordCamp Russia 2014]

if( false !== mb_strpos( $video, 'youtu' ) ) { $url = parse_url( $video ); parse_str( $url[ 'query' ], $query ); $id = $query[ 'v' ]; $embed_code = "<iframe width='560' height='315' src='//www.youtube.com/embed/{$id}' frameborder='0' allowfullscreen></iframe>";}

$embed_code = wp_oembed_get( $video );

$video = 'https://www.youtube.com/watch?v=Lcvh0DgytH8';

ПРЕОБРАЗОВАТЬ ССЫЛКИ НА ВИДЕО В HTML КОД ПЛЕЕРАЗАДАЧА

Page 41: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$dir = get_template_directory();

СОЗДАТЬ ВРЕМЕННЫЙ ФАЙЛ С УНИКАЛЬНЫМ ИМЕНЕМЗАДАЧА

Page 42: Малоизвестные функции в WordPress [WordCamp Russia 2014]

do { $filename = uniqid();}while( file_exists( $dir . DIRECTORY_SEPARATOR . $filename ) );touch( $dir . DIRECTORY_SEPARATOR . $filename );

$dir = get_template_directory();

СОЗДАТЬ ВРЕМЕННЫЙ ФАЙЛ С УНИКАЛЬНЫМ ИМЕНЕМЗАДАЧА

Page 43: Малоизвестные функции в WordPress [WordCamp Russia 2014]

do { $filename = uniqid();}while( file_exists( $dir . DIRECTORY_SEPARATOR . $filename ) );touch( $dir . DIRECTORY_SEPARATOR . $filename );

$filename = wp_tempnam( null, $dir );

$dir = get_template_directory();

СОЗДАТЬ ВРЕМЕННЫЙ ФАЙЛ С УНИКАЛЬНЫМ ИМЕНЕМЗАДАЧА

Page 44: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$number = 83; $length = 5;

ДОПОЛНИТЬ ЧИСЛО НУЛЯМИ ДО НУЖНОГО КОЛИЧЕСТВА СИМВОЛОВЗАДАЧА

Page 45: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$string = sprintf( '%0' . $length . 's', $number );

$number = 83; $length = 5;

ДОПОЛНИТЬ ЧИСЛО НУЛЯМИ ДО НУЖНОГО КОЛИЧЕСТВА СИМВОЛОВЗАДАЧА

Page 46: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$string = sprintf( '%0' . $length . 's', $number );

$string = $number;for( $i = mb_strlen( $number ); $i < $length; $i++ ) { $string = 0 . $string; }

$number = 83; $length = 5;

ДОПОЛНИТЬ ЧИСЛО НУЛЯМИ ДО НУЖНОГО КОЛИЧЕСТВА СИМВОЛОВЗАДАЧА

Page 47: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$string = sprintf( '%0' . $length . 's', $number );

$string = $number;for( $i = mb_strlen( $number ); $i < $length; $i++ ) { $string = 0 . $string; }

$string = zeroise( $number, $length )

$number = 83; $length = 5;

ДОПОЛНИТЬ ЧИСЛО НУЛЯМИ ДО НУЖНОГО КОЛИЧЕСТВА СИМВОЛОВЗАДАЧА

Page 48: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$jsonp_url = "/ajax/search/callback=?"; $message = "Hello World!";

ЗАДАТЬ JAVASCRIPT ПЕРЕМЕННЫЕ ИЗ PHPЗАДАЧА

Page 49: Малоизвестные функции в WordPress [WordCamp Russia 2014]

wp_enqueue_script( 'my-script', $script_url, array( 'jquery' ) );echo "<script> var MyScript = { jsonpUrl: '$jsonp_url', message: '$message' }; </script>";

$jsonp_url = "/ajax/search/callback=?"; $message = "Hello World!";

ЗАДАТЬ JAVASCRIPT ПЕРЕМЕННЫЕ ИЗ PHPЗАДАЧА

Page 50: Малоизвестные функции в WordPress [WordCamp Russia 2014]

wp_enqueue_script( 'my-script', $script_url, array( 'jquery' ) );echo "<script> var MyScript = { jsonpUrl: '$jsonp_url', message: '$message' }; </script>";

wp_enqueue_script( 'my-script', $script_url, array( 'jquery' ) );wp_localize_script( 'my-script', 'MyScript', array( 'jsonpUrl' => $jsonp_url, 'message' => $message ));

$jsonp_url = "/ajax/search/callback=?"; $message = "Hello World!";

ЗАДАТЬ JAVASCRIPT ПЕРЕМЕННЫЕ ИЗ PHPЗАДАЧА

Page 51: Малоизвестные функции в WordPress [WordCamp Russia 2014]

ПОЛЕЗНЫЙ PHP САХАР

Page 52: Малоизвестные функции в WordPress [WordCamp Russia 2014]

add_action( 'save_post', 'save_post_callback' );function save_post_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_callback()

ПОЛЕЗНЫЙ PHP САХАР

Page 53: Малоизвестные функции в WordPress [WordCamp Russia 2014]

add_action( 'save_post', 'save_post_callback' );function save_post_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_callback()

add_action( 'save_post', 'save_post_type_callback' );function save_post_type_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_type_callback()

ПОЛЕЗНЫЙ PHP САХАР

Page 54: Малоизвестные функции в WordPress [WordCamp Russia 2014]

add_action( 'save_post', 'save_post_callback' );function save_post_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_callback()

add_action( 'save_post', 'save_post_type_callback' );function save_post_type_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_type_callback()

add_action( 'save_post', 'the_save_post_type_callback' );function the_save_post_type_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare the_save_post_type_callback()

ПОЛЕЗНЫЙ PHP САХАР

Page 55: Малоизвестные функции в WordPress [WordCamp Russia 2014]

add_action( 'save_post', 'save_post_callback' );function save_post_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_callback()

add_action( 'save_post', 'save_post_type_callback' );function save_post_type_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare save_post_type_callback()

add_action( 'save_post', 'the_save_post_type_callback' );function the_save_post_type_callback( $post_id ) { /* some stuff */ }

Fatal error: Cannot redeclare the_save_post_type_callback()

add_action( 'save_post', 'JUST_SAVE_THIS_F_POST' );function JUST_SAVE_THIS_F_POST( $post_id ) { /* some stuff */ }

Success!

ПОЛЕЗНЫЙ PHP САХАР

Page 56: Малоизвестные функции в WordPress [WordCamp Russia 2014]

ПОЛЕЗНЫЙ PHP САХАР

add_action( 'save_post', function( $post_id ) { // some stuff});

Page 57: Малоизвестные функции в WordPress [WordCamp Russia 2014]

class My_Plugin { public function register_actions() { add_action( 'save_post', array( $this, 'save_product_callback') ); add_action( 'save_post', array( $this, 'save_product_meta_callback') ); } private function save_product_callback( $post_id ) { // some stuff // some stuff } private function save_product_meta_callback( $post_id ) { // some stuff }}

Warning: cannot access private method My_Plugin::save_product_callback()

ПОЛЕЗНЫЙ PHP САХАР

Page 58: Малоизвестные функции в WordPress [WordCamp Russia 2014]

class My_Awesome_Plugin { public function register_actions() { add_action( 'save_post', function( $post_id ) { $this->save_product_callback( $post_id ); $this->save_product_meta_callback( $post_id ); }); } private function save_product_callback( $post_id ) { // some stuff } private function save_product_meta_callback( $post_id ) { // some stuff }}}

ПОЛЕЗНЫЙ PHP САХАР

Page 59: Малоизвестные функции в WordPress [WordCamp Russia 2014]

$post_ids = array_map( function( $post ) { return $post->ID;}, $posts );

$published_posts = array_filter( $posts , function( $post ) { return $post->post_status == 'publish';});

usort( $posts, function( $post_one, $post_two ) { return strcmp( $post_one->post_title, $post_two->post_title );});

ПОЛЕЗНЫЙ PHP САХАР

Page 60: Малоизвестные функции в WordPress [WordCamp Russia 2014]