<?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>functions.php &#8211; країна має талант</title>
	<atom:link href="https://lilumi.org.ua/tag/functionsphp/feed" rel="self" type="application/rss+xml" />
	<link>https://lilumi.org.ua</link>
	<description></description>
	<lastBuildDate>Fri, 26 Nov 2010 16:55:24 +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/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 fetchpriority="high" 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>
	</channel>
</rss>
