<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Блоговод</title>
	<atom:link href="https://blogcoding.ru/feed/" rel="self" type="application/rss+xml"/>
	<link>https://blogcoding.ru</link>
	<description>Блоговодство и блоговедение</description>
	<lastBuildDate>Sun, 06 May 2018 14:22:59 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Расширение “XAds” для SAM Pro</title>
		<link>https://blogcoding.ru/wordpress/plugins/rasshirenie-xads-dlya-sam-pro/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/rasshirenie-xads-dlya-sam-pro/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Mon, 23 Jan 2017 13:15:41 +0000</pubDate>
				<category><![CDATA[Плагины]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=4008</guid>

					<description><![CDATA[XAds - расширение для плагина SAM Pro (в редакциях Free и Lite), добавляющее новые возможности визуализации рекламных объявлений обслуживаемых плагином SAM Pro.]]></description>
										<content:encoded><![CDATA[<p><strong>XAds</strong> &#8211; расширение для плагина <strong>SAM Pro</strong> (в редакциях <a href="http://blogcoding.ru/35671b/URZFSRAPFhwUCkFRSUFXQENKXEQDHkNYFFYIXRAaQVFUT0FLDBhfQQYAHA==/"><strong>Free</strong></a> и <a href="http://blogcoding.ru/35671b/URZFSRAPFhwACldQWlJcSl8KHVgBRRxdFVQMHBBUXx1JEF4UD1xNVkxUAQILAgsBBVtBUwIMXl0PWAxGEGpBWVQSXVwPXFs=/"><strong>Lite</strong></a>), добавляющее новые возможности визуализации рекламных объявлений обслуживаемых плагином <strong>SAM Pro</strong>. Оно добавляет возможность показа объявлений в виде всплывающих объявлений, фиксированных объявлений, угловых объявлений и объявлений в фоновой области сайта. Все доступные рекламные объекты (кроме объекта &#8220;<strong>Блок</strong>&#8220;) могут быть использованы в качестве контента для расширения &#8220;<strong>XAds</strong>&#8220;.</p>
<p>Кроме того, расширение <strong>XAds</strong> может быть использовано как простая система сообщений блога.</p>
<p><img fetchpriority="high" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2017/01/xads-ad-types.jpg" width="700" height="800" /></p>
Возможности

Угловое рекламное объявление (javascript)
Рекламные объявления в области фона сайта
Фиксированные рекламные объявления
Всплывающие рекламные объявления
Возможность показа объявлений по событиям прокрутки контента
Возможность настройки внешнего вида диалоговых окон объявлений
Возможность настройки позиций фиксированных объявлений
Возможность выбора анимационных эффектов для показа объявлений

Системные требования

PHP 5.3+
WordPress 4.1+
SAM Pro (редакция Free или Lite) 1.9.9+

Документация
<p>Полная документация по расширению <strong>XAds</strong> доступна на официальном сайте <a href="http://uncle-sam.info/addons/xads/"><strong>проекта UncleSAM</strong></a>.</p>
<p>&copy; 2017 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/rasshirenie-xads-dlya-sam-pro/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Simple Ads Manager против SAM Pro (Free Edition)</title>
		<link>https://blogcoding.ru/wordpress/plugins/simple-ads-manager-protiv-sam-pro-free-edition/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/simple-ads-manager-protiv-sam-pro-free-edition/#respond</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Sat, 27 Aug 2016 19:46:47 +0000</pubDate>
				<category><![CDATA[Плагины]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3966</guid>

					<description><![CDATA[Захотелось расставить точки над i в вопросе плагина Simple Ads Manager, т.к. многие по прежнему пользуются именно этим плагином и игнорируют плагин SAM Pro (Free Edition).]]></description>
										<content:encoded><![CDATA[<p>Захотелось расставить точки над i в вопросе плагина <strong><a href="https://wordpress.org/plugins/simple-ads-manager/">Simple Ads Manager</a></strong>, т.к. многие по прежнему пользуются именно этим плагином и игнорируют плагин <strong><a href="https://wordpress.org/plugins/sam-pro-free/">SAM Pro (Free Edition)</a></strong>.</p>
<p>Плагин <strong>SAM Pro (Free Edition)</strong> &#8211; это полностью переработанный плагин <strong>Simple Ads Manager</strong>, в некотором смысле, это его современная реинкарнация. В процессе переработки плагина было изменено (доработано) ядро плагина, изменён интерфейс административной части плагина на более удобный и современный, изменены основные функции для более надёжной и устойчивой работы, были соблюдены все современные требования в плане безопасности и устойчивости к хакерским атакам. Старая версия плагина (<strong>Simple Ads Manager</strong>) была оставлена в репозитарии WordPress по той простой причине, что есть ещё пользователи работающие на серверах под управлением <strong>PHP 5.2</strong>.</p>
<p>Рассмотрим плюсы и минусы обоих плагинов относительно друг друга.</p>
Simple Ads Manager
Плюсы

<strong>Пересекающиеся множества запретов и разрешений</strong>. На практике это означает, что, например, если Вы разрешили показ объявления в статьях принадлежащих к некоторому множеству рубрик, Вы можете одновременно запретить показ этого же объявления в другом множестве рубрик и если в какой-то статье эти множества пересекутся (статья принадлежит к одной или нескольким рубрикам из белого и чёрного списка), то сработает правило запрета. Эта возможность может серьёзно улучшить гибкость логики показа, хотя и применяется нечасто. В <strong>SAM Pro</strong> такая возможность отсутствует, Вы можете либо разрешить показ, либо запретить его. Почему? Потому что всё имеет цену. При прочих равных условиях, запрос текущего объявления в <strong>SAM Pro</strong> выполняется в два раза быстрее, чем в <strong>Simple Ads Manager</strong>.

<p>Увы! Это единственный плюс плагина <strong>Simple Ads Manager</strong>.</p>
Минусы

<strong>Устаревший интерфейс управления</strong>. Каждое действие, совершаемое админом, сопровождается перезагрузкой страницы. Меня это очень раздражает &#8211; у меня нет лишнего времени.
<strong>Безопасность</strong>. Увы, это слабое место плагина <strong>Simple Ads Manager</strong>. И если на страницах администрирования всё более или менее в порядке, то на клиентской стороне данные передаваемые AJAX-запросом шифруются общедоступным ключом, что чревато доступом к данным мошенниками с помощью <strong>SQL-injection</strong>. Конечно всё не так страшно, но теоретически такая возможность существует.
<strong>Неоптимизированные статистические данные</strong>. Плагин <strong>Simple Ads Manager</strong> хранит статистические данные в неоптимизированном виде, т.е. для каждого события отводится одна запись в таблице базы данных. В результате мы имеем неконтролируемый рост объёма данных в таблице, что может привести к печальным последствиям &#8211; дисковое пространство не резиновое и имеет конечный доступный объём для хранения данных.
<strong>Неудачная структура хранимых данных</strong>. Все объявления жёстко привязаны к объекту &#8220;Рекламное Место&#8221; и являются частью структуры рекламного места, что не позволяет повторно использовать объявления в других рекламных местах.

<p>Есть и другие менее серьёзные минусы, но самые важные я перечислил выше.</p>
SAM Pro (Free Edition)
Плюсы

<strong>Современный интерфейс управления</strong>. Практически все действия администратора исполняются с помощью AJAX-запросов, что экономит массу времени.
<strong>Безопасность</strong>. Наиболее уязвимые данные передаваемые через AJAX шифруются индивидуальным ключом. Уникальный ключ создаётся для каждого сайта при первой установке плагина. Это серьёзно уменьшает уязвимость плагина перед хакерскими атаками.
<strong>Статистические данные</strong>. Статистические данные хранятся в оптимизированном виде, что экономит дисковое пространство и позволяет расширить временной диапазон хранения статистики.
<strong>Повторное использование объявлений</strong>. Объявления существуют отдельно как самостоятельные объекты. Это позволяет подключать и использовать объявления с любым количеством рекламных мест.
<strong>Оптимизированные запросы</strong>. Возможность использования только тех правил (запретов и разрешений) которые необходимы на данном сайте позволяет оптимизировать длину запросов, что существенно увеличивает быстродействие плагина.
<strong>API расширений</strong>. API расширений позволяет расширять функциональность плагина <strong>SAM Pro (Free Edition)</strong> с помощью аддонов (расширений). Расширения может написать любой желающий. Официальные расширения доступны на сайте плагина.

<p>Есть и другие плюсы&#8230;</p>
Минусы

<strong>Невозможность использования пересекающихся запретов и разрешений</strong>. См. плюсы плагина <strong>Simple Ads Manager</strong>.

P.S.
<p>По мнению коллег разработчиков основным минусом обоих плагинов является слишком большое количество возможностей для бесплатной версии. Может стоит урезать функционал?</p>
<p>&copy; 2016 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/simple-ads-manager-protiv-sam-pro-free-edition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Расширение “Ad Slider” для SAM Pro</title>
		<link>https://blogcoding.ru/wordpress/plugins/rasshirenie-ad-slider-dlya-sam-pro/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/rasshirenie-ad-slider-dlya-sam-pro/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Thu, 11 Aug 2016 15:13:08 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3947</guid>

					<description><![CDATA[Ad Slider (слайдер рекламных объявлений) - расширение для плагина SAM Pro (в редакциях Free и Lite), позволяющее производить вывод рекламных объявлений в виде слайдера с эффектом затухания или смещения по горизонтали.]]></description>
										<content:encoded><![CDATA[<p><strong><a href="https://codecanyon.net/item/ad-slider-for-sam-pro/17399741?ref=minimus_simplelib">Ad Slider</a></strong> (слайдер рекламных объявлений) &#8211; расширение для плагина <strong>SAM Pro</strong> (в редакциях <a href="https://wordpress.org/plugins/sam-pro-free/"><strong>Free</strong></a> и <a href="https://codecanyon.net/item/sam-pro-lite/12721925?ref=minimus_simplelib"><strong>Lite</strong></a>), позволяющее производить вывод рекламных объявлений в виде слайдера с эффектом затухания или смещения по горизонтали.</p>
<p>В основном, эддон предназначен для использования с плагином <strong>SAM Pro (Free Edition)</strong>, так как добавляет этому плагину не только возможность вывода объявлений в виде слайдера, но и возможность ротации объявлений по таймеру (эта возможность встроена в плагин <strong>SAM Pro Lite</strong>). В оба плагина эддон добавляет также возможность настройки параметров слайдера.</p>
<p>Пример вывода с помощью эддона <strong>Ad Slider</strong> Вы можете увидеть в начале этой статьи.</p>
Возможности

Возможность ротации объявлений по таймеру (только для плагина <strong>SAM Pro Free</strong>)
Возможность показа объявлений в виде слайдера
Два эффекта слайдера: затухание, сдвиг по горизонтали
Возможность регулировки параметров слайдера (длительность показа объявления, длительность анимации перехода, эффекты анимации и т.д.)
Возможность ротации в слайдере любого типа объявлений (изображения баннеров, javascript объявления, PHP объявления и т.д.)
Адаптивность размеров объявлений
Возможность локализации

Системные требования

PHP 5.3+
Wordpress 4.1+
SAM Pro (редакция Free или Lite) 1.9+

Документация
<p>Полная документация по расширению <strong><a href="http://uncle-sam.info/addons/ad-slider/">Ad Slider</a></strong> доступна на официальном сайте <a href="http://uncle-sam.info/"><strong>проекта UncleSAM</strong></a>.</p>
<p>Купить расширение <strong>Ad Slider</strong> можно на сайте <a href="https://codecanyon.net/item/ad-slider-for-sam-pro/17399741?ref=minimus_simplelib"><strong>CodeCanyon</strong></a>.</p>
<p>&copy; 2016 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/rasshirenie-ad-slider-dlya-sam-pro/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Envato API. Обновление плагина из WordPress.</title>
		<link>https://blogcoding.ru/wordpress/programming/envato-api-obnovlenie-plagina-iz-wordpress/</link>
					<comments>https://blogcoding.ru/wordpress/programming/envato-api-obnovlenie-plagina-iz-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Mon, 28 Mar 2016 21:16:10 +0000</pubDate>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[CodeCanyon]]></category>
		<category><![CDATA[Envato]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[плагин]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3872</guid>

					<description><![CDATA[Как вы вероятно уже знаете, WordPress имеет механизм, который обнаруживает, что плагины, темы и само ядро WordPress имеют обновления. Уведомляет об этом пользователя, когда они имеются, получает информацию об этих обновлениях и позволяет автоматически устанавливать их. Однако всё это касается только плагинов и шаблонов тем размещённых в репозитариях WordPress. Разумеется, существуют способы для расширения этого [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Как вы вероятно уже знаете, WordPress имеет механизм, который обнаруживает, что плагины, темы и само ядро WordPress имеют обновления. Уведомляет об этом пользователя, когда они имеются, получает информацию об этих обновлениях и позволяет автоматически устанавливать их. Однако всё это касается только плагинов и шаблонов тем размещённых в репозитариях WordPress.</p>
<p>Разумеется, существуют способы для расширения этого механизма на плагины и темы размещённые на других серверах. В сети есть немало скриптов для получения возможности обновления с GitHub и даже с собственного сервера. Есть скрипты и для обновления с Envato Market (CodeCanyon и ThemeForest). Однако все скрипты доступа к Envato используют API, который на сегодняшний день является устаревшим и с июня 2016 доступ к этому API будет закрыт. Теперь необходимо пользоваться новым API. Пришлось написать скрипт самому.</p>
<div id='stb-container-8221' class='stb-container-css stb-info-container stb-caption stb-collapsible stb-hidden stb-image-big stb-ltr stb-corners stb-shadow stb-border'><div id='stb-caption-box-8221' class='stb-info-caption_box stb_caption stb-caption-box' ><div class='stb-caption-icon'><img src='https://blogcoding.ru/wp-content/stb-pro-themes/stb-pro-simple-flash-line/info.png'></div><span>Это интересно</span><div id="stb-tool-8221" class="stb-tool"><img decoding="async" class="stb-tool-img" id="stb-toolimg-8221" src="https://blogcoding.ru/wp-content/stb-pro-themes/stb-pro-simple-flash-line/plus.png" title="Показать" /></div></div><div id='stb-body-box-8221' class='stb-info-body_box stb_body stb-body-box' ></p>
<p><strong>1С:Предприятие</strong> — легендарный программный продукт компании <strong>«1С»</strong>, предназначенный для автоматизации деятельности на предприятии.</p>
<p>Первоначально «<strong>1С:Предприятие</strong>» было предназначено для автоматизации бухгалтерского и управленческого учётов (включая начисление зарплаты и управление кадрами), но сегодня этот продукт находит свое применение в областях, связанных не только с решением бухгалтерских задач.</p>
<p>Технологическая платформа «<strong>1С:Предприятие</strong>» представляет собой программную оболочку над базой данных. Используются базы на основе <strong>DBF</strong>-файлов в 7.7, собственный формат <strong>1CD</strong> с версии 8.0 или СУБД <strong>Microsoft SQL Server</strong> на любой из этих версий. Кроме того, с версии 8.1 хранение данных возможно в <strong>PostgreSQL</strong> и <strong>IBM DB2</strong>, а с версии 8.2 добавилась и <strong>Oracle</strong>. Платформа имеет свой внутренний язык программирования, обеспечивающий, помимо доступа к данным, возможность взаимодействия с другими программами посредством <strong>OLE</strong> и <strong>DDE</strong>, в версиях 7.7, 8.0 и 8.1 — с помощью <strong>COM-соединения</strong>.</p>
<p>На данной странице (<strong><a href="http://www.softcom.ua/1c/prices/">http://www.softcom.ua/1c/prices/</a></strong>) представлена стоимость программных продуктов 1С версии 8 и 7.7 разных конфигураций для разного количества пользователей.</p>
<p></div></div>
Немного об авто-обновлении
<p>WordPress имеет отличную систему автоматического обновления, которая уведомляет Вас о том, что доступны новые версии ядра WordPress, установленные плагины или темы. Уведомления отображаются в админ-баре, а также на странице плагинов, где вы можете получить более подробную информацию о новой версии.</p>
<p>Для того, чтобы установить новую версию, вы просто должны нажать кнопку &#8220;Обновить автоматически&#8221;. WordPress автоматически загрузит новый пакет, распакует его и заменит старые файлы на новые. Нет необходимости использовать FTP для удаления и загрузки файлов.</p>
<p><img decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/wp-plugins-page.jpg" width="1055" height="276" /></p>
<p>Существует также специальная страница для обновлений, которая доступна в меню &#8220;Консоль&#8221;. Это полезно, когда вы хотите провести массовое обновление плагинов вместо обновления каждого из них в отдельности. На ней также имеется кнопка &#8220;Проверить снова&#8221;,  с помощью которой можно принудительно проверить наличие новых обновлений. По умолчанию, WordPress делает это каждые 12 часов.</p>
<p><img decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/wp-update-page.jpg" width="1081" height="792" /></p>
<p>На обеих страницах (Плагины, Обновление) Вы можете посмотреть подробную информацию о новой версии, нажав на ссылку &#8220;Детали&#8221; или &#8220;Посмотреть информацию о версии Х.Х.Х&#8221;.</p>
<p><img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/wp-plugin-info-pane.jpg" width="946" height="868" /></p>
Скрипт
План работ
<p>Все вышеперечисленные функции обеспечиваются сервером WordPress, т.е. при запросе с Вашего блога сервер <em>wordpress.org</em> возвращает всю необходимую информацию. Сервер <strong>Envato</strong> также позволяет получить всю необходимую информацию об обновлении плагина, продаваемого на <strong>CodeCanyon</strong> (плагины на <strong>Envato Market</strong>), но в другой структуре данных (отличной от WordPress). Кроме того, в скриптах WordPress нет ни одного, который бы отвечал за получение информации от каких либо серверов, кроме WordPress. Следовательно наша задача состоит в том, чтобы:</p>

Обеспечить получение информации о наличии новой версии плагина и уведомить о наличии оной WordPress
Обеспечить получение информации о плагине для дальнейшего просмотра пользователем плагина (администратором блога)
Обеспечить доступ к файлу новой версии плагина, размещённому на сервере Envato для загрузки и обновления

<p>Все три пункта плана мы сможем реализовать с помощью трёх фильтров WordPress, а именно 
			<span id="urvanov-syntax-highlighter-69c9814d18749021849803" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">pre_set_site_transient_update_plugins</span></span></span>, 
			<span id="urvanov-syntax-highlighter-69c9814d18753405115681" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">plugins_api</span></span></span> и 
			<span id="urvanov-syntax-highlighter-69c9814d18756898569165" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">upgrader_package_options</span></span></span>.</p>
Подготовка данных
<p>Скрипт реализован в виде класса (ООП) и принимает при запуске два необходимых для работы параметра. В принципе, Вы можете изменить класс так, чтобы принимаемые данные были заданы в самом классе, но при этом класс потеряет свою универсальность.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function __construct( $id, $data ) {
	if ( ! empty( $id ) ) {
		$this-&gt;itemId         = $id;
		$this-&gt;personalToken  = ( isset( $data['token'] ) ) ? $data['token'] : null;
		$this-&gt;currentVersion = ( isset( $data['version'] ) ) ? $data['version'] : null;
		$this-&gt;slug           = ( isset( $data['slug'] ) ) ? $data['slug'] : null;
		$this-&gt;pluginSlug     = ( isset( $data['pluginSlug'] ) ) ? $data['pluginSlug'] : null;
		$this-&gt;name           = ( isset( $data['name'] ) ) ? $data['name'] : null;
	}
	$this-&gt;enabled = self::is_enabled();
	if($this-&gt;enabled) {
		add_filter( 'pre_set_site_transient_update_plugins', array( &amp;$this, 'checkUpdate' ) );
		add_filter( 'plugins_api', array( &amp;$this, 'checkInfo' ), 10, 3 );
		add_filter( 'upgrader_package_options', array( &amp;$this, 'setUpdatePackage' ) );
	}
}</pre><p>
Для обеспечения выполнения поставленной задачи, нам необходимы следующие данные:</p>

<strong>$id</strong> &#8211; идентификационный номер плагина в системе Envato
<strong>$data[&#8216;token&#8217;]</strong> &#8211; персональный ключ покупателя плагина (Personal Token)
<strong>$data[&#8216;version&#8217;]</strong> &#8211; текущая версия плагина
<strong>$data[&#8216;slug&#8217;]</strong> &#8211; псевдоним плагина (например: <em>sam-pro-lite</em>)
<strong>$data[&#8216;pluginSlug&#8217;]</strong> &#8211; полный псевдоним плагина (папка плагина + имя главного файла, например: <em>sam-pro-lite/sam-pro-lite.php</em>)
<strong>$data[&#8216;name&#8217;]</strong> &#8211; имя плагина

<p>Покупатель плагина может сгенерировать <strong>Personal Token</strong> на сайте <a href="https://build.envato.com/create-token/">Envato API</a>. Минимальный набор разрешений для ключа должен быть таким:</p>
<div id="attachment_3899" style="width: 494px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3899" src="http://blogcoding.ru/wp-content/uploads/2016/03/token-required-permissions.jpg" width="484" height="870" /><p id="caption-attachment-3899" class="wp-caption-text">Минимальный набор разрешений</p></div>
<p>Конструктор плагина принимает эти данные в виде двух параметров: строкового <strong>$id</strong> и массива <strong>$data</strong>. После проверки наличия данных конструктор назначает в качестве обработчиков фильтров методы класса <strong>checkUpdate</strong>, <strong>checkInfo</strong> и <strong>setUpdatePackage</strong>.</p>

pre_set_site_transient_update_plugins &#8211; checkUpdate
plugins_api &#8211; checkInfo
upgrader_package_options &#8211; getUpdatePackage

Получение данных об обновлении
<p>Так как Ваш плагин размещён не в репозитарии WordPress, запрос на получение информации об обновлениях Вашего плагина останется без ответа, если Вы не предпримете необходимых действий. Т.е. не вмешаетесь в процесс получения информации.</p>
<p>Каждый раз, когда WordPress опрашивает репозитарий о наличии новых версий, он записывает в специальный параметр 
			<span id="urvanov-syntax-highlighter-69c9814d1875a516998338" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">_set_transient_update_plugins</span></span></span> в таблицу базы данных <em>wp_options</em>. Фильтр 
			<span id="urvanov-syntax-highlighter-69c9814d1875b443094602" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">pre_set_transient_update_plugins</span></span></span> вызывается непосредственно перед записью параметра в таблицу. Необходимо вмешаться в этот процесс.</p>
<p>Фильтр передаёт на обработку только один параметр &#8211; массив данных, записываемый в базу данных.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function checkUpdate( $transient ) {
	if ( empty( $transient-&gt;checked ) ) {
		return $transient;
	}

	$pluginInfo = self::requestInfo();
	if ( isset( $pluginInfo['wordpress_plugin_metadata'] ) ) {
		$info = $pluginInfo['wordpress_plugin_metadata'];
		if ( version_compare( $this-&gt;currentVersion, $info['version'], '&lt;' ) ) {
			$plugin                                   = new stdClass();
			$plugin-&gt;slug                             = $this-&gt;slug;
			$plugin-&gt;new_version                      = $info['version'];
			$plugin-&gt;url                              = '';
			$plugin-&gt;package                          = $this-&gt;pluginSlug;
			$plugin-&gt;name                             = $info['plugin_name'];
			$plugin-&gt;plugin                           = $this-&gt;pluginSlug;
			$transient-&gt;response[ $this-&gt;pluginSlug ] = $plugin;
		}
	}

	return $transient;
}</pre><p>
Сначала проверяется наличие в массиве данных наличие поля &#8220;checked&#8221;. Если оно есть, это значит, что WordPress запросил и обработал данные об обновлении и сейчас самое время вставить в параметр свои данные. Если нет, значит 12 часов ещё не прошло&#8230; Ничего не делаем.</p>
<p>Если время работать, запрашиваем сервер Envato (вспомогательный метод класса <strong>requestInfo</strong>) и сравниваем текущую версию плагина с версией плагина полученной в ответ на запрос. Если полученная версия больше текущей, заполняем необходимые поля объекта описания плагина и добавляем объект в поле &#8220;response&#8221; результирующего массива. Всё. Теперь WordPress знает, что наш плагин требует обновления.</p>
<div id='stb-container-2979' class='stb-container-css stb-warning-container stb-no-caption stb-image-big stb-ltr stb-corners stb-shadow stb-border stb-side-none'><div class='stb-icon'><img src='https://blogcoding.ru/wp-content/stb-pro-themes/stb-pro-simple-flash-line/warning.png'></div><div id='stb-box-2979' class='stb-warning_box stb-box' >В поле &#8220;package&#8221; записывается полный псевдоним плагина по причине того, что мы не можем записать ссылку на файл обновлённого плагина, т.к. она предоставляется на короткое время и может оказаться устаревшей к моменту физического обновления. Вместе с тем, при передаче параметров на обновление у нас нет другого способа определить какой именно плагин обновляется в данный момент. Псевдоним поможет нам определить, что обновляется именно наш плагин.</div></div>
<p>Что касается непосредственного получения информации о плагине, то для получения оной Envato API требуется только ID плагина (в системе Envato Market) и персонального ключа (Personal Token) покупателя:
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function requestInfo() {
	$args = array(
		'headers' =&gt; array(
			'Authorization' =&gt; 'Bearer ' . $this-&gt;personalToken,
		),
		'timeout' =&gt; 30,
	);
	$url  = 'https://api.envato.com/v2/market/catalog/item?id=' . $this-&gt;itemId;

	$response = wp_remote_get( esc_url_raw( $url ), $args );

	$response_code    = wp_remote_retrieve_response_code( $response );
	$response_message = wp_remote_retrieve_response_message( $response );

	if ( 200 !== $response_code &amp;&amp; ! empty( $response_message ) ) {
		return new WP_Error( $response_code, $response_message );
	} elseif ( 200 !== $response_code ) {
		return new WP_Error( $response_code, __( 'An unknown API error occurred.', SAM_PRO_DOMAIN ) );
	} else {
		$out = json_decode( wp_remote_retrieve_body( $response ), true );
		if ( null === $out ) {
			return new WP_Error( 'api_error', __( 'An unknown API error occurred.', SAM_PRO_DOMAIN ) );
		}

		return $out;
	}
}</pre><p>
Результат обработки фильтра будет таким:</p>
<p><img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/plugins-update.jpg" width="1186" height="854" /></p>
Получение информации о плагине
<p>Получение данных детальной информации о плагине лучше всего организовать обработав фильтр 
			<span id="urvanov-syntax-highlighter-69c9814d18760266893564" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">plugins_api</span></span></span>. Само получение информации мало чем отличается от процедуры получения данных об обновлении. Только объёмом данных передаваемых в WordPress.</p>
<p>Фильтр передаёт обрабатывающей функции три параметра: <strong>$result</strong>, <strong>$action</strong>, <strong>$args</strong>, из которых нам потребуется только последний.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function checkInfo( $result, $action, $args ) {
	if ( $args-&gt;slug === $this-&gt;slug ) {
		$pluginInfo = self::requestInfo();
		if ( isset( $pluginInfo['wordpress_plugin_metadata'] ) ) {
			$info        = $pluginInfo['wordpress_plugin_metadata'];
			$versions    = self::getAttribute( $pluginInfo['attributes'], 'compatible-software' );
			$sections    = explode( '&lt;h2 id="item-description__changelog"&gt;Changelog&lt;/h2&gt;', $pluginInfo['description'] );
			$description = ( isset( $sections[0] ) ) ? $sections[0] : '';
			$changelog   = ( isset( $sections[1] ) ) ? $sections[1] : '';

			$plugin                  = new stdClass();
			$plugin-&gt;name            = $info['plugin_name'];
			$plugin-&gt;author          = $info['author'];
			$plugin-&gt;slug            = $this-&gt;slug;
			$plugin-&gt;version         = $info['version'];
			$plugin-&gt;requires        = $versions['required'];
			$plugin-&gt;tested          = $versions['tested'];
			$plugin-&gt;rating          = ( (int) $pluginInfo['rating']['count'] &lt; 3 ) ? 100.0 : 20 * (float) $pluginInfo['rating']['rating'];
			$plugin-&gt;num_ratings     = (int) $pluginInfo['rating']['count'];
			$plugin-&gt;active_installs = (int) $pluginInfo['number_of_sales'];
			$plugin-&gt;last_updated    = $pluginInfo['updated_at'];
			$plugin-&gt;added           = $pluginInfo['published_at'];
			$plugin-&gt;homepage        = "URL домашней страницы Вашего плагина";
			$plugin-&gt;sections        = array(
				'description' =&gt; $description,
				'changelog'   =&gt; $changelog
			);
			$plugin-&gt;download_link   = $pluginInfo['url'];
			$plugin-&gt;banners         = array(
				'high' =&gt; $pluginInfo['previews']['landscape_preview']['landscape_url']
			);

			return $plugin;
		} else {
			return false;
		}
	} else {
		return false;
	}
}</pre><p>
<div id='stb-container-7849' class='stb-container-css stb-warning-container stb-no-caption stb-image-big stb-ltr stb-corners stb-shadow stb-border stb-side-none'><div class='stb-icon'><img src='https://blogcoding.ru/wp-content/stb-pro-themes/stb-pro-simple-flash-line/warning.png'></div><div id='stb-box-7849' class='stb-warning_box stb-box' >Справочные данные по структуре передаваемых данных на сайте Envato API не всегда соответствуют действительности! Будьте осторожны!</div></div></p>
<p>Если получен ответ метод возвращает массив данных содержащий детальную информацию о плагине, которая будет показана в модальном окне &#8220;Детали&#8221;:</p>
<p><img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/plugin-update-info.jpg" width="1217" height="857" /></p>
Получение файла плагина
<p>Для получения файла плагина и передачи его установщику WordPress лучше всего использовать фильтр 
			<span id="urvanov-syntax-highlighter-69c9814d18764094074708" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">upgrader_package_options</span></span></span>. Есть другие варианты (например фильтр 
			<span id="urvanov-syntax-highlighter-69c9814d18765811490787" class="urvanov-syntax-highlighter-syntax urvanov-syntax-highlighter-syntax-inline  crayon-theme-classic crayon-theme-classic-inline urvanov-syntax-highlighter-font-monaco" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important;"><span class="crayon-pre urvanov-syntax-highlighter-code" style="font-size: 12px !important; line-height: 15px !important;font-size: 12px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">upgrader_pre_download</span></span></span>), но этот лучший.</p>
<p>Так же как и для получения информации о плагине, для получения ссылки на файл плагина необходим ID плагина и персональный ключ покупателя. В ответе сервера будут получены две ссылки: одна на архив полного пакета плагина, другая на загружаемый архив, пригодный для передачи установщику WordPress.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function requestDownloadUrl() {
	$args = array(
		'headers' =&gt; array(
			'Authorization' =&gt; 'Bearer ' . $this-&gt;personalToken,
		),
		'timeout' =&gt; 30,
	);
	$url  = 'https://api.envato.com/v2/market/buyer/download?item_id=' . $this-&gt;itemId . '&amp;shorten_url=true';

	$response = wp_remote_get( esc_url_raw( $url ), $args );

	$response_code    = wp_remote_retrieve_response_code( $response );
	$response_message = wp_remote_retrieve_response_message( $response );

	if ( 200 !== $response_code &amp;&amp; ! empty( $response_message ) ) {
		return new WP_Error( $response_code, $response_message );
	} elseif ( 200 !== $response_code ) {
		return new WP_Error( $response_code, __( 'An unknown API error occurred.', SAM_PRO_DOMAIN ) );
	} else {
		$out = json_decode( wp_remote_retrieve_body( $response ), true );
		if ( null === $out ) {
			return new WP_Error( 'api_error', __( 'An unknown API error occurred.', SAM_PRO_DOMAIN ) );
		}

		return $out;
	}
}</pre><p>
<div id='stb-container-6272' class='stb-container-css stb-warning-container stb-no-caption stb-image-big stb-ltr stb-corners stb-shadow stb-border stb-side-none'><div class='stb-icon'><img src='https://blogcoding.ru/wp-content/stb-pro-themes/stb-pro-simple-flash-line/warning.png'></div><div id='stb-box-6272' class='stb-warning_box stb-box' >Обратите внимание! Personal Token продавца не даёт доступ к получению ссылки на файл плагина. Для тестирования Вам необходимо купить плагин у самого себя (нонсенс, но некоторые так делают) или попросить сгенерировать Personal Token одного из покупателей Вашего плагина.</div></div></p>
<p>Фильтр передаёт обработчику только один параметр &#8211; массив, содержащий некоторые данные о загружаемом пакете, позволяющие установить путь к файлу пакета плагина. Чем мы и воспользуемся. К сожалению, нет никакой возможности определить какой именно плагин будет загружаться в данный момент с помощью легальных способов. Если бы в массиве параметров содержался псевдоним плагина, всё было бы совсем просто. Но, увы, нет. Именно для того, чтобы &#8220;поймать&#8221; свой плагин мы записали в поле &#8220;URL пакета&#8221; (package) полный псевдоним плагина.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function setUpdatePackage( $options ) {
	$package = $options['package'];
	if ( $package === $this-&gt;pluginSlug ) {
		$response           = self::requestDownloadUrl();
		$options['package'] =
			( is_wp_error( $response ) || empty( $response ) || ! empty( $response['error'] ) ) ?
				'' :
				$response['wordpress_plugin'];
	}

	return $options;
}</pre><p>
Если получение URL пакета завершилось успехом, установщику WordPress передаётся полученный URL, если нет &#8211; передаётся пустая строка, что приводит к отказу от обновления, но не приводит к краху системы.</p>
<p><img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2016/03/updating-sam-pro-lite.jpg" width="1196" height="368" /></p>
<p>Вот и всё. Осталось только включить скрипт в нужном месте и в нужное время.</p>
<p>Чтобы подключить скрипт воспользуемся событием (action) <strong>init</strong>.
</p><pre class="urvanov-syntax-highlighter-plain-tag">public function __construct() {
	...
	
	add_action( 'init', array( &amp;$this, 'updatingService' ) );

	...
}

public function updatingService() {
	$settings = self::getSettings();
	include_once ('tools/simplelib-plugin-upgrader.php');
	$emToken = self::decryptData($settings['emToken']);
	$this-&gt;samProUpgrader = new SimpleLibPluginUpgrader('12721925', array(
		'token' =&gt; $emToken,
		'version' =&gt; SAM_PRO_VERSION,
		'slug' =&gt; 'sam-pro-lite',
		'pluginSlug' =&gt; basename( SAM_PRO_PATH ) . '/' . basename( SAM_PRO_MAIN_FILE ),
		'name' =&gt; 'SAM Pro Lite'
	));
}</pre><p></p>
Полный код скрипта
<p>На сегодняшний день скрипт не полностью универсален, но&#8230;
</p><pre class="urvanov-syntax-highlighter-plain-tag">&lt;?php
/**
 * Class SimpleLibPluginUpgrader.
 * Version 1.4
 * Author: minimus
 * Author URI: http://simplelib.com
 */

if ( ! class_exists( 'SimpleLibPluginUpgrader' ) ) {
	class SimpleLibPluginUpgrader {
		private $itemId = null;
		private $personalToken = null;
		private $currentVersion = null;
		private $slug = null;
		private $pluginSlug = null;
		private $name = null;
		private $homepage = '';
		private $errorString = '';
		private $defaultSections = array(
			'description',
			'installation',
			'faq',
			'screenshots',
			'changelog',
			'reviews',
			'other_notes'
		);

		public $enabled = false;
		public $callback = null;

		/**
		 * SimpleLibPluginUpgrader constructor.
		 *
		 * @param string $id Envato Item ID
		 * @param array $data Contains the required parameters
		 *                      token — Personal Token of buyer
		 *                      version — plugin current version
		 *                      slug — slug of plugin (i.e.: sam-pro-lite)
		 *                      pluginSlug — full slug of plugin (plugin folder + name of main plugin file,
		 *                        i.e.: sam-pro-lite/sam-pro-lite.php)
		 *                      name — name of plugin
		 *                      homepage – plugin homepage URL, not required
		 *                      errorString - localized error string
		 * @param null|callable $callback The function provides splitting of the content of the Envato plugin description
		 *                                to the standard sections.
		 */
		public function __construct( $id, $data, $callback = null ) {
			if ( ! empty( $id ) ) {
				$this-&gt;itemId         = $id;
				$this-&gt;personalToken  = ( isset( $data['token'] ) ) ? $data['token'] : null;
				$this-&gt;currentVersion = ( isset( $data['version'] ) ) ? $data['version'] : null;
				$this-&gt;slug           = ( isset( $data['slug'] ) ) ? $data['slug'] : null;
				$this-&gt;pluginSlug     = ( isset( $data['pluginSlug'] ) ) ? $data['pluginSlug'] : null;
				$this-&gt;name           = ( isset( $data['name'] ) ) ? $data['name'] : null;
				$this-&gt;homepage       = ( isset( $data['homepage'] ) ) ? $data['homepage'] : '';
				$this-&gt;errorString    = ( isset( $data['errorString'] ) ) ? $data['errorString'] : 'An unknown API error occurred.';
				$this-&gt;callback       = $callback;
			}
			$this-&gt;enabled = self::is_enabled();
			if ( $this-&gt;enabled ) {
				add_filter( 'pre_set_site_transient_update_plugins', array( &amp;$this, 'checkUpdate' ) );
				add_filter( 'plugins_api', array( &amp;$this, 'checkInfo' ), 10, 3 );
				add_filter( 'upgrader_package_options', array( &amp;$this, 'setUpdatePackage' ) );
			}
		}

		/**
		 * Checking for all the transmitted data to the class
		 *
		 * @return bool
		 */
		private function is_enabled() {
			return (
				! is_null( $this-&gt;itemId ) &amp;&amp;
				! is_null( $this-&gt;personalToken ) &amp;&amp;
				! is_null( $this-&gt;currentVersion ) &amp;&amp;
				! is_null( $this-&gt;slug ) &amp;&amp;
				! is_null( $this-&gt;pluginSlug ) &amp;&amp;
				! is_null( $this-&gt;name )
			);
		}

		/**
		 * Preparing of the part of received data
		 *
		 * @param array $data  preparing data
		 * @param string $name the name of input data part
		 *
		 * @return array|bool|string
		 */
		private function getAttribute( $data, $name ) {
			$out = '';
			foreach ( $data as $key =&gt; $val ) {
				if ( $val['name'] === $name ) {
					switch ( $name ) {
						case 'compatible-software':
							$out = array(
								'required' =&gt; str_replace( 'WordPress ', '', $val['value'][ count( $val['value'] ) - 1 ] ),
								'tested'   =&gt; str_replace( 'WordPress ', '', $val['value'][0] )
							);
							break;
						default:
							$out = false;
					}
				}
			}

			return $out;
		}

		/**
		 * Default function for splitting content. If user function is not defined, provides splitting of the content
		 * of the Envato plugin description to the standard sections.
		 * Default sections: description, installation, faq,	screenshots, changelog,	reviews, other_notes.
		 *
		 * @param null|array $data content of the Envato plugin description
		 *
		 * @return array
		 */
		private function getSections( $data = null ) {
			if ( is_null( $data ) || empty( $data ) ) {
				return array();
			}

			$out                = array();
			$m                  = preg_match_all( "/&lt;h2(.*?)&gt;(.+?)&lt;\/h2&gt;/", $data, $matches );
			$sections           = preg_split( "/&lt;h2(.*?)&gt;(.+?)&lt;\/h2&gt;/", $data );
			$out['description'] = ( isset( $sections[0] ) ) ? $sections[0] : '';
			foreach ( $matches[2] as $key =&gt; $match ) {
				$out[ strtolower( $match ) ] = $sections[ $key + 1 ];
			}

			return $out;
		}

		/**
		 * Request data from Envato API
		 *
		 * @param string $data type of data for request
		 *
		 * @return array|mixed|null|object|WP_Error
		 */
		public function request( $data = 'info' ) {
			$args = array(
				'headers' =&gt; array(
					'Authorization' =&gt; 'Bearer ' . $this-&gt;personalToken,
				),
				'timeout' =&gt; 30,
			);

			switch ( $data ) {
				case 'info':
					$url = 'https://api.envato.com/v3/market/catalog/item?id=' . $this-&gt;itemId;
					break;
				case 'link':
					$url = 'https://api.envato.com/v3/market/buyer/download?item_id=' . $this-&gt;itemId . '&amp;shorten_url=true';
					break;
				default:
					$url = 'https://api.envato.com/v3/market/catalog/item?id=' . $this-&gt;itemId;
			}

			$response = wp_remote_get( esc_url_raw( $url ), $args );

			$response_code    = wp_remote_retrieve_response_code( $response );
			$response_message = wp_remote_retrieve_response_message( $response );

			if ( 200 !== $response_code &amp;&amp; ! empty( $response_message ) ) {
				return new WP_Error( $response_code, $response_message );
			} elseif ( 200 !== $response_code ) {
				return new WP_Error( $response_code, $this-&gt;errorString );
			} elseif ( 200 == $response_code ) {
				$out = json_decode( wp_remote_retrieve_body( $response ), true );
				if ( null === $out ) {
					return new WP_Error( 'api_error', $this-&gt;errorString );
				}

				return $out;
			} else {
				return null;
			}
		}

		/**
		 * pre_set_site_transient_update_plugins filter handler. Checking the availability of an update of the plugin
		 * on the CodeCanyon.
		 *
		 * @param object $transient
		 *
		 * @return object
		 */
		public function checkUpdate( $transient ) {
			if ( empty( $transient-&gt;checked ) ) {
				return $transient;
			}

			$pluginInfo = self::request();
			if ( is_array( $pluginInfo ) &amp;&amp; isset( $pluginInfo['wordpress_plugin_metadata'] ) ) {
				$info = $pluginInfo['wordpress_plugin_metadata'];
				if ( version_compare( $this-&gt;currentVersion, $info['version'], '&lt;' ) ) {
					$plugin                                   = new stdClass();
					$plugin-&gt;slug                             = $this-&gt;slug;
					$plugin-&gt;new_version                      = $info['version'];
					$plugin-&gt;url                              = '';
					$plugin-&gt;package                          = $this-&gt;pluginSlug;
					$plugin-&gt;name                             = $info['plugin_name'];
					$plugin-&gt;plugin                           = $this-&gt;pluginSlug;
					$transient-&gt;response[ $this-&gt;pluginSlug ] = $plugin;
				}
			}

			return $transient;
		}

		/**
		 * plugins_api filter handler. Retrieving plugin information from Envato API.
		 *
		 * @param false|object|array $result The result object or array. Default false.
		 * @param string             $action The type of information being requested from the Plugin Install API.
		 * @param object             $args   Plugin API arguments.
		 *
		 * @return bool|object
		 */
		public function checkInfo( $result, $action, $args ) {
			if ( $args-&gt;slug === $this-&gt;slug ) {
				$pluginInfo = self::request();
				if ( is_array( $pluginInfo ) &amp;&amp; isset( $pluginInfo['wordpress_plugin_metadata'] ) ) {
					$info     = $pluginInfo['wordpress_plugin_metadata'];
					$versions = self::getAttribute( $pluginInfo['attributes'], 'compatible-software' );
					$sections = ( is_null( $this-&gt;callback ) ) ?
						self::getSections( $pluginInfo['description'] ) :
						call_user_func( $this-&gt;callback, $pluginInfo['description'] );

					$plugin                  = new stdClass();
					$plugin-&gt;name            = $info['plugin_name'];
					$plugin-&gt;author          = $info['author'];
					$plugin-&gt;slug            = $this-&gt;slug;
					$plugin-&gt;version         = $info['version'];
					$plugin-&gt;requires        = $versions['required'];
					$plugin-&gt;tested          = $versions['tested'];
					$plugin-&gt;rating          = ( (int) $pluginInfo['rating']['count'] &lt; 3 ) ? 100.0 : 20 * (float) $pluginInfo['rating']['rating'];
					$plugin-&gt;num_ratings     = (int) $pluginInfo['rating']['count'];
					$plugin-&gt;active_installs = (int) $pluginInfo['number_of_sales'];
					$plugin-&gt;last_updated    = $pluginInfo['updated_at'];
					$plugin-&gt;added           = $pluginInfo['published_at'];
					$plugin-&gt;homepage        = $this-&gt;homepage;
					$plugin-&gt;sections        = $sections;
					$plugin-&gt;download_link   = $pluginInfo['url'];
					$plugin-&gt;banners         = array(
						'high' =&gt; $pluginInfo['previews']['landscape_preview']['landscape_url']
					);

					return $plugin;
				} else {
					return false;
				}
			} else {
				return false;
			}
		}

		/**
		 * upgrader_package_options filter handler. Retrieving plugin package URI from Envato API.
		 *
		 * @param array $options The package options before running an update.
		 *
		 * @return array
		 */
		public function setUpdatePackage( $options ) {
			$package = $options['package'];
			if ( $package === $this-&gt;pluginSlug ) {
				$response           = self::request( 'link' );
				$options['package'] =
					( is_wp_error( $response ) || empty( $response ) || ! empty( $response['error'] ) ) ?
						'' :
						$response['wordpress_plugin'];
			}

			return $options;
		}
	}
}</pre><p>
Теперь точно всё! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&copy; 2016, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/programming/envato-api-obnovlenie-plagina-iz-wordpress/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Расширение “Geo Targeting” для SAM Pro (Free Edition)</title>
		<link>https://blogcoding.ru/wordpress/plugins/rasshirenie-geo-targeting-dlya-sam-pro-free-edition/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/rasshirenie-geo-targeting-dlya-sam-pro-free-edition/#respond</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Sun, 07 Feb 2016 12:49:10 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3840</guid>

					<description><![CDATA[Geo Targeting (Геотаргетинг) - расширение для плагина SAM Pro (Free Edition). С помощью этого расширения Вы можете ограничить целевую аудиторию выбранных рекламных объявлений на основе географического положения посетителя, что поможет увеличить эффективность определённого сегмента рекламных объявлений (местная и региональная реклама).]]></description>
										<content:encoded><![CDATA[<p><strong><a href="http://codecanyon.net/item/geo-targeting-addon-for-sam-pro-free-edition/14633737?ref=minimus_simplelib">Geo Targeting</a></strong> (Геотаргетинг) &#8211; расширение для плагина <strong><a href="http://blogcoding.ru/wordpress/plugins/wordpress-plagin-sam-pro-free-edition/">SAM Pro (Free Edition)</a></strong>. С помощью этого расширения Вы можете ограничить целевую аудиторию выбранных рекламных объявлений на основе географического положения посетителя, что поможет увеличить эффективность определённого сегмента рекламных объявлений (местная и региональная реклама).</p>
Возможности

Трёхуровневый таргетинг по географическому положению клиента (страна, регион, город)
Возможность подключения к популярным онлайн сервисам для определения географического положения клиента, таким как <strong>MaxMind</strong> (<strong>MaxMind GeoIP Legacy</strong> или <strong>MaxMind GeoIP2 Precision</strong>) и <strong>DB-IP</strong>
Возможность подключения к собственным базам данных <strong>MaxMind GeoIP2 DB</strong> или <strong>GeoLite2 DB</strong>, расположенным на собственном сервере
Инструмент для создания вспомогательных данных
Удобный в использовании интерфейс

Системные требования

<strong>PHP 5.3</strong> и выше (включая <strong>PHP 7.0</strong>)
<strong>WordPress 4.1+</strong>
Плагин <strong>SAM Pro (Free Edition) 1.5+</strong>

Установка
<p>Чтобы установить это расширение, вы должны иметь уже установленную рабочую версию WordPress. Также необходимо установить <strong>SAM Pro (Free Edition)</strong> версии <strong>1.5 или более поздней версии</strong>. Это расширение будет правильно работать только с SAM Pro в <strong>редакции Free</strong>.</p>
Через FTP

Распакуйте загруженный файл <strong>spf-geo-targeting. X.X.X.XX.zip</strong> в подходящую папку . После этого распакуйте файл архива <strong>spf-geo-targeting.zip</strong> .
Войдите на Ваш сервер используя любой FTP клиент.
Загрузите папку извлеченного плагина <em>(spf-geo-targeting)</em> в папку <em>wp-content/plugins</em> на сервере. Правильный путь после загрузки: <em>wp-content/plugins/spf-geo-targeting</em>
Активируйте установленный плагин.

Используя WordPress

Перейдите на страницу <em>Плагины &gt; Добавить новый</em>
Нажмите кнопку <em>Загрузить плагин</em>
Выберите <strong>spf-geo-targeting.zip</strong> файл на вашем компьютере и нажмите кнопку «<em>Установить сейчас</em>»
Активировать установленный плагин

<p>После активации плагина, перейдите на страницу настройки плагина SAM Pro и убедитесь, что это расширение появилось в списке активных дополнений.</p>
<p><img loading="lazy" decoding="async" src="http://uncle-sam.info/wp-content/uploads/2016/01/addons-list.png" width="292" height="342" /></p>
Документация
<p>Полная документация по расширению <strong><a href="http://codecanyon.net/item/geo-targeting-addon-for-sam-pro-free-edition/14633737?ref=minimus_simplelib">Geo Targeting</a></strong> доступна на официальном сайте <a href="http://uncle-sam.info/addons/geo-targeting/"><strong>проекта UncleSAM</strong></a>.</p>
<p>Купить расширение <strong>Geo Targeting</strong> можно на сайте <a href="http://codecanyon.net/item/geo-targeting-addon-for-sam-pro-free-edition/14633737?ref=minimus_simplelib"><strong>CodeCanyon</strong></a>.</p>
<p>&copy; 2016 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/rasshirenie-geo-targeting-dlya-sam-pro-free-edition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Расширение “Advertising Request” для SAM Pro (Free Edition)</title>
		<link>https://blogcoding.ru/wordpress/plugins/rasshirenie-advertising-request-dlya-sam-pro-free-edition/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/rasshirenie-advertising-request-dlya-sam-pro-free-edition/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Sat, 30 Jan 2016 16:25:27 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3823</guid>

					<description><![CDATA[Advertising Request (запрос на размещение рекламы) &#8211; расширение для плагина SAM Pro (Free Edition). С помощью этого расширения Вы можете создать страницу запроса на размещение рекламы на Вашем сайте для потенциальных рекламодателей. Кроме того, это расширение позволит Вам создать страницу представляющую уникальные статистические данные для каждого рекламодателя, разместившего свои рекламные объявления на Вашем сайте. Возможности [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://uncle-sam.info/addons/advertising-request/"><strong>Advertising Request</strong></a> (запрос на размещение рекламы) &#8211; расширение для плагина <strong><a href="http://blogcoding.ru/wordpress/plugins/wordpress-plagin-sam-pro-free-edition/">SAM Pro (Free Edition)</a></strong>. С помощью этого расширения Вы можете создать страницу запроса на размещение рекламы на Вашем сайте для потенциальных рекламодателей. Кроме того, это расширение позволит Вам создать страницу представляющую уникальные статистические данные для каждого рекламодателя, разместившего свои рекламные объявления на Вашем сайте.</p>
Возможности

Форма запроса на размещение рекламы
Информационная таблица (список продаваемых рекламных мест сайта)
Панель статистических данных (уникальные данные для каждого рекламодателя)
Уведомление администратора сайта о поступившем запросе на размещение рекламы по e-mail
Уведомление рекламодателя об утверждении размещения объявления на сайте по e-mail

Системные требования

<strong>PHP 5.3</strong> и выше (включая <strong>PHP 7.0</strong>)
<strong>WordPress 4.1+</strong>
Плагин <strong>SAM Pro (Free Edition) 1.5+</strong>

Установка
<p>Чтобы установить это расширение, вы должны иметь уже установленную рабочую версию WordPress. Также необходимо установить <strong>SAM Pro (Free Edition)</strong> версии <strong>1.5 или более поздней версии</strong>. Это расширение будет правильно работать только с SAM Pro в <strong>редакции Free</strong>.</p>
Через FTP

Распакуйте загруженный файл <strong>spf-advertising-request. X.X.X.XX.zip</strong> в подходящую папку . После этого распакуйте файл архива <strong>spf-advertising-request.zip</strong> .
Войдите на Ваш сервер используя любой FTP клиент.
Загрузите папку извлеченного плагина <em>(spf-advertising-request)</em> в папку <em>wp-content/plugins</em> на сервере. Правильный путь после загрузки: <em>wp-content/plugins/spf-advertising-request</em>
Активируйте установленный плагин.

Используя WordPress

Перейдите на страницу <em>Плагины &gt; Добавить новый</em>
Нажмите кнопку <em>Загрузить плагин</em>
Выберите <strong>spf-advertising-request.zip</strong> файл на вашем компьютере и нажмите кнопку «<em>Установить сейчас</em>»
Активировать установленный плагин

<p>После активации плагина, перейдите на страницу настройки плагина SAM Pro и убедитесь, что это расширение появилось в списке активных дополнений.</p>
<p><img loading="lazy" decoding="async" src="http://uncle-sam.info/wp-content/uploads/2016/01/addons-list.png" width="292" height="342" /></p>
Документация
<p>Полная документация по расширению <strong><a href="http://codecanyon.net/item/advertising-request-for-sam-pro-free-edition/14562108?ref=minimus_simplelib">Advertising Request</a></strong> доступна на официальном сайте <a href="http://uncle-sam.info/addons/advertising-request/"><strong>проекта UncleSAM</strong></a>.</p>
<p>Купить расширение <strong>Advertising Request</strong> можно на сайте <a href="http://codecanyon.net/item/advertising-request-for-sam-pro-free-edition/14562108?ref=minimus_simplelib"><strong>CodeCanyon</strong></a>.</p>
<p>&copy; 2016 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/rasshirenie-advertising-request-dlya-sam-pro-free-edition/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Делайте ваши ставки, господа!</title>
		<link>https://blogcoding.ru/blogging/delayte-vashi-stavki-gospoda/</link>
					<comments>https://blogcoding.ru/blogging/delayte-vashi-stavki-gospoda/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Tue, 12 Jan 2016 10:18:50 +0000</pubDate>
				<category><![CDATA[Блоггинг]]></category>
		<category><![CDATA[букмекер]]></category>
		<category><![CDATA[отдых]]></category>
		<category><![CDATA[тотализатор]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3804</guid>

					<description><![CDATA[В настоящее время в интернете появилось огромное количество букмекерских контор, как отечественного происхождения, так и филиалов зарубежных фирм. И это не с проста, ведь если бы бизнес букмекеров был убыточным, то вряд ли бы они росли как грибы после дождя. Значит для букмекеров это прибыльное дело, а для игроков это скорее статья расходов, нежели заработок. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В настоящее время в интернете появилось огромное количество букмекерских контор, как отечественного происхождения, так и филиалов зарубежных фирм. И это не с проста, ведь если бы бизнес букмекеров был убыточным, то вряд ли бы они росли как грибы после дождя. Значит для букмекеров это прибыльное дело, а для игроков это скорее статья расходов, нежели заработок. Вы всегда должны помнить, что тотализатор – это риск и нет гарантии, что вы останетесь «в плюсе».</p>
История тотализатора

Вначале игра производилась лишь между знакомыми и носила характер пари между известною группою лиц; с течением времени число играющих значительно увеличилось, причём случалось, что посредники, то есть лица, устраивавшие заклады, собрав деньги, скрывались, не уплатив ничего выигравшим.
Ввиду этого, некий Оллер в Париже в 1865 г. открыл, под своей личной ответственностью, центральную кассу для приёма закладов от играющих; это предприятие имело большой успех и вызвало ряд других подобных касс. Вскоре, однако, агентства на ипподромах были запрещены и оставлены лишь походные конторы для лиц, посещающих испытания лошадей. С 1866 г. в Париже появились англичане «букмекеры», принимавшие заклады на основании котировки лошадей, смотря по их шансам на выигрыш (paris à la côte).


В 1874 г. Оллер изобрел новый способ игры, получивший название игры в Т. (pari mutuel). Вследствие постоянного возрастания игры, скаковые и беговые круги превратились в игорные места с массою злоупотреблений.


В 1876 г. Тотализатор во Франции был вовсе воспрещён и агентства подверглись преследованию; но так как заклады по котировке лошадей были отчасти дозволены, а также оставались и букмекеры, то азартная игра на ипподромах продолжала существовать и расти.


В 1887 г. последовало воспрещение закладов, как на ипподромах, так и вне их, как отдельными лицами, так и агентствами. В обществе возникло сильное течение в пользу Тотализатора; скаковые общества выступили с ходатайствами о разрешении им устроить тотализатор, который действовал бы на условиях и правилах, утверждённых правительством.


С 1888 г. на французских ипподромах официально действует Тотализатор, регулируемый законами 1891 и 1896 гг. Получаемый обществами доход с тотализатора не должен быть смешиваем с другими доходами обществ и подлежит расходованию под надзором правительства, преимущественно на увеличение призов, премий и субсидий.


В 1895 г. общая сумма закладов на всех французских ипподромах составила 163 018 413 фр.; из этой суммы 1 % был обращён в фонд на поощрение коневодства, 2 % отданы на благотворительные учреждения и 4 % поступили в пользу обществ.


В большинстве европейских государств устройство тотализатора требует особого разрешения правительства, от получения которого освобождены лишь непубличные тотализаторы, то есть такие, доступ к которым имеют только члены известного общества, клуба и т. п., но не посторонние лица.


В Германии по закону 1894 г. Тотализатор подлежит платежу штемпельного налога, установленного для лотерей. В России в 1889 г. изданы в административном порядке правила игры на Тотализатор, причём, ввиду значительно усилившегося азарта среди рабочих и вообще недостаточных классов, размер ставки установлен не менее 10 руб.

Терминология
<p>Тотализа́тор — это один из видов заключаемых пари. Этимология слова «тотализатор» имеет несколько корней. На бегах и скачках на ипподроме — это счётчик, показывающий денежные ставки, сделанные на определённую лошадь и общую сумму ставок (фр. totalisateur, от totaliser — суммировать, подводить итог). Тотализатором называют также бюро, принимающее ставки на лошадей и выплачивающее выигрыш, и саму игру на тотализаторе, и организацию, принимающую ставки на лошадей и выплачивающую выигрыши.</p>
<p>В момент ставки участник может лишь предполагать, сколько выиграет и выиграет ли вообще.</p>
<p>Организаторы тотализатора берут себе процент от всех сделанных ставок, не принимая участия в рисках азартной игры, а неся лишь обычное бремя бизнес-рисков по оправданию расходов. Обыватели по этой причине зачастую говорят, что организаторы всегда в выигрыше, хотя это не более справедливо, чем относительно любого дела, например: организации шоу или съёмок фильма, которые могут прогореть, если расходы не окупаются. Более того, не всегда тотализаторы были коммерческими: иногда они служили источником существования некоммерческих организаций, связанных с разведением лошадей.</p>
<p>Первые тотализаторы известны ещё со времен Древнего Рима. Местом их дислокации являлись арены для проведения гладиаторских боёв.</p>
<p>Букмекер (англ. bookmaker) — профессия профессионального спорщика, занятого приёмом денежных ставок на различные предстоящие события (чаще всего спортивные) с заранее оговоренными выигрышами, а также выплатой выигрышей. Букмекеры принимают ставки при игре на скачках и бегах, на результаты различных спортивных, политических, культурных, финансовых, погодных и прочих событий. Для букмекера важно уметь хорошо прогнозировать (самостоятельно или на основании других прогнозов) предполагаемые вероятности событий, на которые принимаются ставки, и будущую популярность различных ставок среди потенциальных клиентов.</p>
<p>Биржа ставок — альтернативный <strong>букмекерской конторе </strong>вариант заключения пари на спортивные и другие события. Биржа ставок, в отличие от букмекерской конторы, лишь предоставляет платформу для заключения пари, само же пари заключаются между игроками, а не между игроком и биржей. Сама же биржа получает доход, беря комиссию с прибыли выигравших участников пари. Таким образом, биржа ставок не рискует своими деньгами.</p>
Выводы
<p>Именно Вам решать где и как делать ставки. Разумеется, лучше быть в курсе событий происходящих на этом рынке услуг. Я рекомендую обзор и <a href="http://betobzor.com/bukmeker/Obzor-bukmekerskoj-kontory-Liga-Stavok">отзывы по БК Лига Ставок</a>.</p>
<p>Удачи!</p>
<p>&copy; 2016, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/blogging/delayte-vashi-stavki-gospoda/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress плагин SAM Pro (Free Edition)</title>
		<link>https://blogcoding.ru/wordpress/plugins/wordpress-plagin-sam-pro-free-edition/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/wordpress-plagin-sam-pro-free-edition/#comments</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Sat, 26 Dec 2015 18:15:45 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3786</guid>

					<description><![CDATA[Ну, вот и свершилось. Опубликован мой новый плагин SAM Pro (Free Edition). Этот плагин является преемником плагина Simple Ads Manager. На первый взгляд может показаться, что плагин SAM Pro (Free Edition) является повторением своего прародителя, но это не так. В новом плагине используется другая структура данных, что позволяет увеличить эго быстродействие. Кроме того, повышены меры безопасности для [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ну, вот и свершилось. Опубликован мой новый плагин <strong><a href="https://wordpress.org/plugins/sam-pro-free/">SAM Pro (Free Edition)</a></strong>. Этот плагин является преемником плагина <strong><a href="https://wordpress.org/plugins/simple-ads-manager/">Simple Ads Manager</a></strong>. На первый взгляд может показаться, что плагин <strong>SAM Pro (Free Edition)</strong> является повторением своего прародителя, но это не так. В новом плагине используется другая структура данных, что позволяет увеличить эго быстродействие. Кроме того, повышены меры безопасности для противодействия возможным хакерским атакам. Так же решена проблема статистики и подсчета кликов.</p>
<p>Новый плагин должен заменить <strong>Simple Ads Manager</strong>. Другими словами, <strong>Simple Ads Manager</strong> продолжать своё развитие не будет. Я не изымаю его из репозитария только потому, что ещё существуют серверы, работающие под управлением <strong>PHP 5.2</strong>. Для <strong>SAM Pro</strong> требуется <strong>PHP 5.3</strong> и выше.</p>
Системные требования
<p><strong>Сервер</strong>:</p>

<strong>PHP 5.3</strong> и выше (включая <strong>PHP 7.0</strong>)
<strong>MySQL/MariaDB 5.1</strong> и выше
<strong>128 МБ</strong> доступной оперативной памяти (memory_limit)

<p><strong>Клиентская сторона, административная панель</strong>:</p>

скорость обмена данными как минимум <strong>2 Мбит</strong>
любой современный браузер

<p><strong>Клиентская сторона, посетитель</strong>:</p>

без ограничений

Возможности плагина

Гибкая логика отображения и ротации рекламных объявлений на базе веса и ограничений каждого объявления
Расписание показов объявления и ограничения показов и кликов.  Возможность использования периодических (ежедневный, еженедельный и месячный лимит) ограничений.
Ограничения по типам страниц сайта
Ограничения по ID статей/страниц, по рубрикам, по меткам, по авторам, по меткам пользовательских таксономий, по пользовательским типам статей. 
Автоматическое встраивание рекламных объявлений в контент статей/страниц.
Поддерживаются все типы контента объявлений (Image, Flash, Javascript, PHP и т.д.).
Отображение объявлений с помощью виджетов, коротких кодов и функций.
Настраиваемая точность обнаружения ботов и роботов
Полная статистика показов и кликов.
Безопасный перенос данных из плагина Simple Ads Manager
Поддерживаются объявления Google <strong>D</strong>oubleClick <strong>f</strong>or <strong>P</strong>ublishers (DFP) обоих типов (GPT и GAM).
Поддержка bbPress
Поддержка WPtouch
Поддержка всех кэширующих плагинов.
и многое другое …

Документация
<p>Документация доступна на <a href="http://uncle-sam.info">официальном сайте</a> плагина. Вся информация представлена на английском языке. Перевод с помощью системы перевода <strong>Bing</strong> доступен по нажатию кнопки &#8220;Перевести&#8221; в верхней части правого сайдбара.</p>

<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/installation-2/">Установка</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/settings-2/">Параметры</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/ads-2/">Рекламные объявления</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/ad-editor-2/">Редактор рекламного объявления</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/places-2/">Места</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/place-editor-2/">Редактор рекламного места</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/zones-2/">Зоны</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/zone-editor-2/">Редактор рекламной зоны</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/blocks-2/">Блоки</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/block-editor-2/">Редактор блока рекламных объявлений</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/advertisers-2/">Рекламодатели</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/statistics-2/">Статистика</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/tools-2/">Инструменты</a>
<a href="http://uncle-sam.info/sam-pro-free/sam-pro-free-docs/outputting-ads-on-the-site-2/">Методы вывода рекламных объявлений на страницы сайта</a>
<a href="http://uncle-sam.info/general-info/migrate-data-from-simple-ads-manager/">Перенос данных Simple Ads Manager в SAM Pro</a>

Это интересно
<p>Сегодня на просторах интернета обрел большую популярность сервис интернет-архивов. Используя <a href="http://seooki.ua/blog/webarchive/">веб-архив</a> Вы в любой момент можете узнать историю чужого сайта или восстановить контент собственного. Более подробную информацию об этом сервисе Вы можете найти в <a href="http://seooki.ua/blog/webarchive/">этой статье</a>&#8230;</p>
<p>&copy; 2015 &#8211; 2018, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/wordpress-plagin-sam-pro-free-edition/feed/</wfw:commentRss>
			<slash:comments>99</slash:comments>
		
		
			</item>
		<item>
		<title>Проект UncleSAM</title>
		<link>https://blogcoding.ru/wordpress/plugins/proekt-unclesam/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/proekt-unclesam/#respond</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Thu, 03 Sep 2015 09:56:23 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[реклама]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3593</guid>

					<description><![CDATA[Поступил в продажу мой новый плагин SAM Pro Lite. С этого события начал жизнь мой новый проект в области разработки плагинов для управления рекламой в WordPress. Проект называется UncleSAM и состоит из трех вариантов плагина SAM Pro, приемников ныне существующего плагина Simple Ads Manager. Поскольку плагин Simple Ads Manager является моим первым опытом в этой [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://blogcoding.ru/wp-content/uploads/2015/09/uncle-sam-project.png"><img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2015/09/uncle-sam-project.png" width="250" height="86" /></a>Поступил в продажу мой новый плагин <strong><a href="http://uncle-sam.info/category/sam-pro-lite/">SAM Pro Lite</a></strong>. С этого события начал жизнь мой новый проект в области разработки плагинов для управления рекламой в WordPress. Проект называется <strong>UncleSAM</strong> и состоит из трех вариантов плагина <strong>SAM Pro</strong>, приемников ныне существующего плагина <strong><a href="http://blogcoding.ru/archives/wordpress-plagin-simple-ads-manager/">Simple Ads Manager</a></strong>.</p>
<p>Поскольку плагин Simple Ads Manager является моим первым опытом в этой области плагиностроения, мне, как это обычно бывает, не удалось избежать некоторых ошибок при планировании функционала и в разработке плагина. Часть ошибок удалось исправить своими силами, часть с помощью добровольных помощников и пользователей плагина. Тем не менее некоторые глобальные просчёты (например в структурировании данных) дают о себе знать как в сопутствующих трудностях использования, так и в невозможности нормального дальнейшего развития плагина.</p>
<p>Новое семейство плагинов разрабатывается с учётом всего ранее накопленного опыта и с внедрением новых технологий. Концепция плагина полностью переработана и расширена.</p>
Состав проекта
<p><strong><a href="https://wordpress.org/plugins/sam-pro-free/">SAM Pro (Free Edition)</a></strong> &#8211; плагин управления рекламой для сайтов блогеров-любителей. Должен заменить плагин <strong><a href="https://wordpress.org/support/plugin/simple-ads-manager">Simple Ads Manager</a></strong>. В основном повторяет возможности предшественника, но на новой платформе.</p>
<p><a href="http://uncle-sam.info/category/sam-pro-lite/"><strong>SAM Pro Lite</strong></a> &#8211; полупрофессиональный плагин для управления рекламой в блоге. Предназначен для небольших профессиональных и крупных любительских сайтов. Этот плагин можно купить на площадке <a href="http://codecanyon.net/item/sam-pro-lite/12721925?ref=minimus_simplelib"><strong>CodeCanyon</strong></a>.</p>
<p><strong>SAM Pro</strong> &#8211; профессиональный плагин для блогеров-профессионалов желающих иметь полный контроль над рекламой и работой с потенциальными рекламодателями. <em>В разработке</em> &#8230;</p>
Возможности

Гибкая логика отображения и ротации рекламных объявлений на базе веса и ограничений каждого объявления
Расписание показов объявления и ограничения показов и кликов.  Возможность использования периодических (ежедневный, еженедельный и месячный лимит) ограничений.
Трёхуровневый геотаргетинг (страна, область, город) на основе веб сервисов (Maxmind, DB-IP), или вашей собственной базы данных (GeoIP2 или GeoLite2). <img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2015/09/pro.png" width="46" height="16" /> <img loading="lazy" decoding="async" src="http://blogcoding.ru/wp-content/uploads/2015/09/pro-lite.png" width="46" height="16" />
Ограничения по типам страниц сайта
Ограничения по ID статей/страниц, по рубрикам, по меткам, по авторам, по меткам пользовательских таксономий, по пользовательским типам статей. 
Автоматическое встраивание рекламных объявлений в контент статей/страниц и страниц архивов.
Поддерживаются все типы контента объявлений (Image, Flash, Javascript, PHP и т.д.).
Отображение объявлений с помощью виджетов, коротких кодов и функций.
Настраиваемая точность обнаружения ботов и роботов
Полная статистика показов и кликов.
Безопасный перенос данных из плагина Simple Ads Manager
Поддерживаются объявления Google <strong>D</strong>oubleClick <strong>f</strong>or <strong>P</strong>ublishers (DFP) обоих типов (GPT и GAM).
Поддержка bbPress
Поддержка всех кэширующих плагинов.
и многое другое &#8230;

<div id="SAM Pro Family" class="p_table_1 p_table_1_8 css3_grid_clearfix p_table_hover_light"><div class="caption_column" style="width: 300px;"><ul><li class="css3_grid_row_0 header_row_1 align_center radius5_topleft"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"></span></span></li><li class="css3_grid_row_1 header_row_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h2 class='caption'><span>Ваш</span> выбор</h2></span></span></li><li style="height: 48px;" class="css3_grid_row_2 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Гибкая логика ротации объявлений базирующаяся на весе объявлений и ограничениях показа</span></span></span></li><li class="css3_grid_row_3 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Ротация по таймеру</span></span></span></li><li class="css3_grid_row_4 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Показ объявлений по расписанию</span></span></span></li><li class="css3_grid_row_5 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Ограничение показов/кликов</span></span></span></li><li class="css3_grid_row_6 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Ограничения показов/кликов за период</span></span></span></li><li class="css3_grid_row_7 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Геотаргетинг</span></span></span></li><li class="css3_grid_row_8 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Ограничения показа по типам страниц</span></span></span></li><li style="height: 65px;" class="css3_grid_row_9 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Ограничение показа по ID статей/страниц, категориям, меткам, авторам, пользовательским таксономиям и пользовательским типам статей</span></span></span></li><li style="height: 35px;" class="css3_grid_row_10 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Автоматическое встраивание объявлений в контент статей/страниц</span></span></span></li><li style="height: 35px;" class="css3_grid_row_11 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Автоматическое встраивание объявлений в контент архивов</span></span></span></li><li class="css3_grid_row_12 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Все типы объявлений</span></span></span></li><li style="height: 35px;" class="css3_grid_row_13 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Вывод с помощью виджетов, коротких кодов и функций</span></span></span></li><li style="height: 35px;" class="css3_grid_row_14 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Настраиваемая точность определения ботов и роботов</span></span></span></li><li class="css3_grid_row_15 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Статистика</span></span></span></li><li class="css3_grid_row_16 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Онлайн статистика</span></span></span></li><li class="css3_grid_row_17 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Расширенная статистика</span></span></span></li><li style="height: 35px;" class="css3_grid_row_18 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Запрос на размещение рекламы для незарегистрированных рекламодателей</span></span></span></li><li style="height: 35px;" class="css3_grid_row_19 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Управление объявлениями зарегистрированными рекламодателями</span></span></span></li><li style="height: 35px;" class="css3_grid_row_20 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Поддержка Google DoubleClick for Publishers (DFP)</span></span></span></li><li class="css3_grid_row_21 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Поддержка любых плагинов кэширования</span></span></span></li><li class="css3_grid_row_22 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Поддержка bbPress</span></span></span></li><li class="css3_grid_row_23 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Поддержка Wptouch</span></span></span></li><li class="css3_grid_row_24 row_style_4"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>API расширений</span></span></span></li><li class="css3_grid_row_25 row_style_2"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Готовность к локализации</span></span></span></li><li class="css3_grid_row_26 footer_row"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"></span></span></li></ul></div><div class="column_1" style="width: 180px;"><ul><li class="css3_grid_row_0 header_row_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h2 class='col1'>SAM Pro Free</h2></span></span></li><li class="css3_grid_row_1 header_row_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h1 class='col1'><span>Free</span></h1><h3 class='col1'>единовременно</h3></span></span></li><li style="height: 48px;" class="css3_grid_row_2 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_3 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li class="css3_grid_row_4 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_5 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_6 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li class="css3_grid_row_7 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><strong><a href='http://blogcoding.ru/wordpress/plugins/rasshirenie-geo-targeting-dlya-sam-pro-free-edition/' target='_blank'>Аддон</a></strong></span></span></span></li><li class="css3_grid_row_8 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 65px;" class="css3_grid_row_9 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_10 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_11 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li class="css3_grid_row_12 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span>Кроме HTML5</span></span></span></li><li style="height: 35px;" class="css3_grid_row_13 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_14 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_15 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_16 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><strong><a href='http://blogcoding.ru/wordpress/plugins/rasshirenie-advertising-request-dlya-sam-pro-free-edition/' target='_blank'>Аддон</a></strong></span></span></span></li><li class="css3_grid_row_17 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_18 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><strong><a href='http://blogcoding.ru/wordpress/plugins/rasshirenie-advertising-request-dlya-sam-pro-free-edition/' target='_blank'>Аддон</a></strong></span></span></span></li><li style="height: 35px;" class="css3_grid_row_19 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_20 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_21 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_22 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_23 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_24 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_25 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_26 footer_row"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><a href='https://wordpress.org/plugins/sam-pro-free/' class='sign_up radius3'>Скачать</a></span></span></li></ul></div><div class="column_2" style="width: 180px;"><ul><li class="css3_grid_row_0 header_row_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h2 class='col2'>SAM Pro Lite</h2></span></span></li><li class="css3_grid_row_1 header_row_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h1 class='col1'>$<span>24</span></h1><h3 class='col1'>единовременно</h3></span></span></li><li style="height: 48px;" class="css3_grid_row_2 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_3 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_4 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_5 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_6 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_7 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_8 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 65px;" class="css3_grid_row_9 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_10 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_11 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_12 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_13 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_14 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_15 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_16 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_17 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_18 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_19 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_no_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_20 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_21 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_22 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_23 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_24 row_style_4 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_25 row_style_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_26 footer_row"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><a href='http://codecanyon.net/item/sam-pro-lite/12721925?ref=minimus_simplelib' class='sign_up radius3'>Купить</a></span></span></li></ul></div><div class="column_3" style="width: 180px;"><ul><li class="css3_grid_row_0 header_row_1 align_center radius5_topright"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h2 class='col3'>SAM Pro</h2></span></span></li><li class="css3_grid_row_1 header_row_2 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><h1 class='col1'><span>N/A</span></h1><h3 class='col1'>единовременно</h3></span></span></li><li style="height: 48px;" class="css3_grid_row_2 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_3 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_4 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_5 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_6 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_7 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_8 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 65px;" class="css3_grid_row_9 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_10 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_11 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_12 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_13 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_14 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_15 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_16 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_17 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_18 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_19 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li style="height: 35px;" class="css3_grid_row_20 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_21 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_22 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_23 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_24 row_style_3 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_25 row_style_1 align_center"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"><span><span class="css3_grid_icon icon_yes_01"></span></span></span></span></li><li class="css3_grid_row_26 footer_row"><span class="css3_grid_vertical_align_table"><span class="css3_grid_vertical_align"></span></span></li></ul></div></div>
<p>&nbsp;</p>
<p><a href="http://uncle-sam.info"><strong>Сайт проекта</strong></a>.</p>
<p>&copy; 2015 &#8211; 2016, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/proekt-unclesam/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STB и utf8mb4</title>
		<link>https://blogcoding.ru/wordpress/plugins/stb-i-utf8mb4/</link>
					<comments>https://blogcoding.ru/wordpress/plugins/stb-i-utf8mb4/#respond</comments>
		
		<dc:creator><![CDATA[minimus]]></dc:creator>
		<pubDate>Mon, 22 Jun 2015 14:41:51 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины]]></category>
		<category><![CDATA[плагин]]></category>
		<guid isPermaLink="false">http://blogcoding.ru/?p=3555</guid>

					<description><![CDATA[На днях получил послание от пользователя в форуме поддержки. Возникла проблема с таблицей стилей в плагине. За всё время существования плагина таких проблем не возникало, а тут &#8220;на тебе&#8221; &#8230; Зашел к нему в админку &#8211; действительно, проблема налицо. В результате недолгих исследований выяснилось следующее. WP 4.2 стал поддерживать charset utf8mb4, и определяет возможность его использования [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>На днях получил <a href="https://wordpress.org/support/topic/something-went-wrong-13?replies=6">послание</a> от пользователя в форуме поддержки. Возникла проблема с таблицей стилей в плагине. За всё время существования плагина таких проблем не возникало, а тут &#8220;на тебе&#8221; &#8230; Зашел к нему в админку &#8211; действительно, проблема налицо. В результате недолгих исследований выяснилось следующее. <strong>WP 4.2</strong> стал поддерживать charset <strong>utf8mb4</strong>, и определяет возможность его использования автоматически по версии <strong>MySQL</strong> (должна быть <strong>5.5.3+</strong>). Однако, у пользователя стоит MySQL специальной версии (<strong>5.5.42-cll</strong>), не поддерживающая этот charset, хотя должна. Как результат &#8211; ошибка при создании таблицы со всеми вытекающими последствиями.</p>
<p>Что делать? Ниже небольшой мануал по борьбе с этой проблемой.

Необходимо обмануть WordPress с помощью небольшого &#8220;танца с бубном&#8221;.</p>
<p>Откройте <strong>phpMyAdmin</strong>, а если у Вас нет к нему доступа, установите любой из плагинов, позволяющий запускать на исполнение SQL сценарии (например: <a href="https://wordpress.org/plugins/sql-executioner/">SQL Executioner</a>, <a href="https://wordpress.org/plugins/miwosql/">MiwoSQL</a> и т.д.). Вам необходимо выполнить два SQL сценария.</p>
<p>Первый:
</p><pre class="urvanov-syntax-highlighter-plain-tag">CREATE TABLE [PREFIX]_stb_styles (
  slug varchar(255) NOT NULL,
  caption varchar(255) NOT NULL,
  js_style text DEFAULT NULL,
  css_style text DEFAULT NULL,
  stype varchar(8) DEFAULT NULL,
  trash tinyint(1) DEFAULT 0,
  PRIMARY KEY (slug)
)
CHARACTER SET utf8
COLLATE utf8_general_ci;</pre><p>
Этим сценарием мы создаём таблицу стилей плагина с charset <strong>utf8</strong>. Не забудьте поменять <strong>[PREFIX]</strong> на реальный префикс вашей базы данных (обычно <strong>wp</strong>).</p>
<p>Второй:
</p><pre class="urvanov-syntax-highlighter-plain-tag">INSERT INTO [PREFIX]_stb_styles(slug, caption, stype, trash) VALUES
('alert', 'Alert!', 'system', 0),
('black', 'Black Quote', 'system', 0),
('custom', 'Custom Style', 'custom', 0),
('download', 'Download',  'system', 0),
('grey', 'Codes', 'special', 0),
('info', 'Info', 'system', 0),
('warning', 'Warning!', 'system', 0);</pre><p>
Этим сценарием мы заполняем таблицу набором данных по-умолчанию. Не забудьте поменять <strong>[PREFIX]</strong> на реальный префикс вашей базы данных (обычно <strong>wp</strong>).</p>
<p>Выполнив оба сценария, зайдите на страницу &#8220;Темы&#8221; плагина и активируйте любую тему.</p>
<p>Вот, собственно и всё. Удачи!</p>
<p>&copy; 2015, <a href='https://blogcoding.ru'>minimus</a>. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogcoding.ru/wordpress/plugins/stb-i-utf8mb4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>