WordPress как на ладони
WordPress темы и плагины за 250 рублей wordpress jino

Оптимизация и исправление кода php

Здравствуйте!
Я новичек в php. Возникла необходимость добавить на сайт галерею от сюда http://photoswipe.com.
Все это решил оформить в виде плагина, потому как планирую в будущем сменить шаблон сайта.

Суть следущая: плагин проверяет наличие на странице шорт-кода и если такой присутствует подключает необходимые скрипты, получает из базы объект с фотографиями принадлежащих к определенному альбому (id=12345) и выводит их на странице.

Написал код, проверил, вроде все работает. Но вот терзают какие-то сомнения. Мне кажется код написан коряво и что то не так.

Помогите пожалуйста оптимизировать ниже приведенный пример и исправить возможные недочеты.
Спасибо!

<?php
/*
Plugin Name: Моя галерея
Description: Выводит на сайте список альбомов и их картинки
Version: 1.0
Author: Net poka
Author URI: http: www.site.ru
*/

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();
0
1.2 год назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация