Оптимизация и исправление кода 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();