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.

Страх и ненависть в исходном коде

279 views

Published on

Доклад с WordCamp Moscow 2017 посвящен распространенным ошибкам у разработчиков плагинов и тем в WordPress. Советы и рекомендации, как можно сделать свой продукт лучше и удобнее для пользователей и разработчиков.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Страх и ненависть в исходном коде

  1. 1. <?php Страх и ненависть в исходном коде WordCamp Москва 2017 Коля Коробочкин // Setka
  2. 2. Настройки PHP
  3. 3. <?php ini_set('display_errors', 1); error_reporting(E_ERROR | E_PARSE); ?> <!DOCTYPE html> <html> <head> !
  4. 4. Загрузка WordPress
  5. 5. ! <html> <head> theme-forest/fancy-styles.css.php theme-forest/super-script.js.php </head> </html>
  6. 6. " wp-admin/admin-ajax.php wp-admin/admin-post.php
 + REST API
  7. 7. <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php <?php Код везде
  8. 8. $this_sdk_version = '1.2.1.6'; global $fs_active_plugins; $my_plugin_path = __FILE__; function my_plugin() {...} !
  9. 9. 1. Не пишите код прямо в файлах. 2. Не используйте анонимные функции. 3. Используйте объекты правильно.
  10. 10. class Unicorn { // Код, который делает полезные // вещи и добавляет // фильтры и события. } new Unicorn(); !
  11. 11. $GLOBALS['yandex_metrika_plugin'] = new Yandex_Metrika_Plugin(); "
  12. 12. Фильтры и объекты
  13. 13. $url = apply_filters('jetpack_url', $envelope->url); $content = apply_filters('jetpack_content', $envelope->content); !
  14. 14. $logger = new Logger($name); $logger->pushHandler(
 new StreamHandler($file)); if(defined('WP_CLI')) $logger->pushHandler(
 new StreamHandler('php://stdout')); 😎
  15. 15. $logger = apply_filters('logger', null, $name); if(is_a($logger, Logger::class)) return $logger; $logger = new Logger($name); return $logger; "
  16. 16. Создание ≈ использование
  17. 17. Composer Менеджер Packagist Каталог Инструменты Symfony
  18. 18. private static function table_list_output() { global $wpdb; echo '<h2>' . __( 'Keys/Apps', 'woocommerce' ) . ' <a href="' . esc_url( // Get the API keys count $count = $wpdb->get_var( "SELECT COUNT(key_id) FROM {$wpdb->prefix}woocom if ( absint( $count ) && $count > 0 ) { $keys_table_list = new WC_Admin_API_Keys_Table_List(); $keys_table_list->prepare_items(); echo '<input type="hidden" name="page" value="wc-settings" />'; echo '<input type="hidden" name="tab" value="api" />'; echo '<input type="hidden" name="section" value="keys" />'; $keys_table_list->views(); $keys_table_list->search_box( __( 'Search key', 'woocommerce' ), 'key' $keys_table_list->display(); } else { echo '<div class="woocommerce-BlankState woocommerce-BlankState--api"> ?> !
  19. 19. $builder->add( 'email', TypeEmailType::class, array('label' => 'Email')
 ); "
  20. 20. /** * Комментарии */
  21. 21. Коля Коробочкин // Setka korobochkin@setka.io korobochkin.com 🏁

×