Оптимизация и исправление кода php
Здравствуйте!
Я новичек в php. Возникла необходимость добавить на сайт галерею от сюда http://photoswipe.com.
Все это решил оформить в виде плагина, потому как планирую в будущем сменить шаблон сайта.
Суть следущая: плагин проверяет наличие на странице шорт-кода и если такой присутствует подключает необходимые скрипты, получает из базы объект с фотографиями принадлежащих к определенному альбому (id=12345) и выводит их на странице.
Написал код, проверил, вроде все работает. Но вот терзают какие-то сомнения. Мне кажется код написан коряво и что то не так.
Помогите пожалуйста оптимизировать ниже приведенный пример и исправить возможные недочеты.
Спасибо!
<?php /* Plugin Name: Моя галерея Description: Выводит на сайте список альбомов и их картинки Version: 1.0 Author: Net poka Author URI: http: www.example.com */ class gallery_shortcode { static $add_script; static function init () { add_shortcode('tattoo_gallery', array(__CLASS__, 'gallery_func')); add_action('init', array(__CLASS__, 'register_script')); add_action('wp_footer', array(__CLASS__, 'print_script')); } static function gallery_func( $atts ) { extract(shortcode_atts( array( 'id' => '' ), $atts ) ); self::$add_script = true; global $wpdb; $photos = $wpdb->get_results("SELECT * FROM lychee_photos WHERE album={$id} ORDER by ID DESC"); echo '<div class="my-gallery" itemscope itemtype="http://schema.org/ImageGallery">'; for($i=0; $i<count($photos); $i++){ echo '<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">'; echo '<a href="'.get_template_directory_uri().'/gallery/uploads/big/'.$photos[$i]->url.'" itemprop="contentUrl" data-size="'.$photos[$i]->width.'x'.$photos[$i]->height.'">'; echo '<img class="" src="'.get_template_directory_uri().'/gallery/uploads/thumb/'.$photos[$i]->thumbUrl.'" itemprop="thumbnail" alt="Image description" /> </a>'; echo '<figcaption itemprop="caption description">'.$photos[$i]->title.'</figcaption>'; echo '<meta itemprop="width" content="'.$photos[$i]->width.'">'; echo '<meta itemprop="height" content="'.$photos[$i]->height.'">'; echo '</figure>'; } echo <<<_HERE </div> <!-- Root element of PhotoSwipe. Must have class pswp. --> <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"> <!-- Background of PhotoSwipe. It is a separate element, as animating opacity is faster than rgba(). --> <div class="pswp__bg"></div> <!-- Slides wrapper with overflow:hidden. --> <div class="pswp__scroll-wrap"> <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. --> <!-- dont modify these 3 pswp__item elements, data is added later on. --> <div class="pswp__container"> <div class="pswp__item"></div> <div class="pswp__item"></div> <div class="pswp__item"></div> </div> <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. --> <div class="pswp__ui pswp__ui--hidden"> <div class="pswp__top-bar"> <!-- Controls are self-explanatory. Order can be changed. --> <div class="pswp__counter"></div> <button class="pswp__button pswp__button--close" title="Close (Esc)"></button> <button class="pswp__button pswp__button--share" title="Share"></button> <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button> <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR --> <!-- element will get class pswp__preloader--active when preloader is running --> <div class="pswp__preloader"> <div class="pswp__preloader__icn"> <div class="pswp__preloader__cut"> <div class="pswp__preloader__donut"></div> </div> </div> </div> </div> <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> <div class="pswp__share-tooltip"></div> </div> <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button> <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button> <div class="pswp__caption"> <div class="pswp__caption__center"></div> </div> </div> </div> </div> </div> _HERE; } static function register_script() { wp_register_script( 'photoswipe-min', 'https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.js'); wp_register_script( 'photoswipe-ui-default', 'https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.js'); wp_register_script( 'foo-js', get_template_directory_uri() . '/gallery/index.js'); } static function print_script () { if ( !self::$add_script ) return; wp_print_scripts('photoswipe-min'); wp_print_scripts('photoswipe-ui-default'); wp_print_scripts('foo-js'); } } gallery_shortcode::init();