<?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>archive.php &#8212; ploshadka.net</title>
	<atom:link href="https://ploshadka.net/tag/archive_php/feed/" rel="self" type="application/rss+xml" />
	<link>https://ploshadka.net</link>
	<description>Мир интернет технологий</description>
	<lastBuildDate>Thu, 21 Dec 2017 12:38:44 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1</generator>
	<item>
		<title>Как вывести записи (посты) по произвольному полю в WordPress</title>
		<link>https://ploshadka.net/wp_query/</link>
					<comments>https://ploshadka.net/wp_query/#comments</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 21 Oct 2017 16:00:20 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[home.php]]></category>
		<category><![CDATA[page.php]]></category>
		<category><![CDATA[search.php]]></category>
		<category><![CDATA[tag.php]]></category>
		<category><![CDATA[WP_Query]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=1848</guid>

					<description><![CDATA[Выводим записи (посты, статьи) в категориях (рубриках, разделах) и тегах по произвольному полю. Используем функцию WP_Query в шаблоне своего сайта на WordPress. Нижеследующие разновидности кодов были отточены практикой и временем. Было убито очень много времени на то, чтобы WP_Query заработал...]]></description>
										<content:encoded><![CDATA[<p>Выводим <strong>записи</strong> (посты, статьи) в <strong>категориях</strong> (рубриках, разделах) и <strong>тегах</strong> по произвольному полю. Используем функцию WP_Query в шаблоне своего сайта на WordPress. <span id="more-1848"></span></p>
<p>Нижеследующие разновидности кодов были отточены практикой и временем. Было убито очень много времени на то, чтобы <strong>WP_Query</strong> заработал именно так, как я от него хотел. В своем роде уникальные коды, переписывающие стандартные выводы записей WordPress. </p>
<p>Функционал этих кодов нигде больше нельзя найти (на момент публикации поста), за исключением отдельных вставок, которые являются общими рекомендациями от WordPress и некоторых участков, позаимствованных из других открытых источников.</p>
<div class="highlight">PHP коды для вывода <strong>WP_Query</strong> состоят из значений <strong>произвольного поля</strong>, которое затем по-разному <strong>сортируются</strong> и <strong>сравниваются</strong>. Дальше в тексте статьи и в самом php уже есть примечания. Если нужны будут дополнительные, то поясняется отдельно.</div>
<p>Эти php коды для вывода записей через WP_Query, для удобства, даются без конструкций <strong>if (have_posts())</strong>. Но без неё работать не будут. Правильная конструкция if (have_posts()) для этих кодов приведена ближе к окончанию статьи.</p>
<h2>1. WP_Query PHP код для вывода записей в КАТЕГОРИЯХ</h2>
<p>Самый простой вывод постов, <strong>исключающий записи из конкретных категорий</strong>. Использую его для вывода на главной странице через <strong>index.php</strong> или <strong>home.php</strong>. </p>
<p>Также этот код занесен у меня в файл <strong>empty.php</strong>. Он нужен на тот случай, если человек зашел в категорию, где не должно быть никаких записей, там не будет ничего выводиться, кроме сообщения, что он не должен был попасть на эту страницу (раздел). И предлагаются инструменты для поиска на сайте.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php query_posts($query_string.'&amp;cat=-1,-169,-40,-91'); ?&gt;</div></div>
<p>Иногда в код, который выводит все статьи, но исключает определенные рубрики, требуется добавить пагинацию (&#038;paged=&#8217;.$paged;), чтобы в последний страницах навигации не было пустых страниц.</p>
<p>В коде ниже выводятся записи с сортировкой по <strong>произвольному полю с ДАТОЙ</strong>. Выводятся записи с произвольным полем год, затем сортируются от последнего года к предыдущему.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
// Произвольное поле по которому будет сортировка<br />
$the_key = '1Year';<br />
$args = array(<br />
&nbsp; &nbsp; 'meta_key' =&gt; $the_key,<br />
&nbsp; &nbsp; // Сортируем по значению цифры в произвольном поле<br />
&nbsp; &nbsp; 'orderby' =&gt; 'meta_value_num',<br />
&nbsp; &nbsp; // Сортируем от большего к меньшему<br />
&nbsp; &nbsp; 'order' =&gt; 'DESC',<br />
&nbsp; &nbsp; // Исключаем категории<br />
&nbsp; &nbsp; 'cat' =&gt; '-310'<br />
);<br />
<br />
global $wp_query;<br />
query_posts(<br />
&nbsp; &nbsp; array_merge(<br />
&nbsp; &nbsp; &nbsp; &nbsp; $wp_query-&gt;query,<br />
&nbsp; &nbsp; &nbsp; &nbsp; $args<br />
&nbsp; &nbsp; )<br />
);<br />
?&gt;</div></div>
<h2>2. WP_Query PHP код для вывода постов в КАТЕГОРИИ с БЮДЖЕТОМ</h2>
<p>Следующий вывод <strong>WP_Query</strong> выводит, в категориях WordPress записи, по <strong>произвольному полю &#171;Бюджет&#187;</strong>. В этом поле находятся цифровые значения. </p>
<p>Допустим требуется вывести в категории &#171;Бюджет&#187; все записи, которые будут <strong>сортироваться от большей цифры к меньшей</strong>.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
global $query_string;<br />
$paged = get_query_var( 'paged', 1 );<br />
$loop = new WP_Query( $args );<br />
$categoryvariable = $cat;<br />
$args = array(<br />
&nbsp; &nbsp; 'post_type' =&gt; 'post',<br />
&nbsp; &nbsp; 'cat' =&gt; $categoryvariable, <br />
&nbsp; &nbsp; // Исключаем категорию<br />
&nbsp; &nbsp; 'cat' &nbsp; &nbsp; &nbsp; =&gt; '-310', &nbsp;<br />
&nbsp; &nbsp; // Выводим по произвольному полю<br />
&nbsp; &nbsp; 'meta_key' &nbsp;=&gt; '1Budget2',<br />
&nbsp; &nbsp; // Нужен для правильной работы пангинации<br />
&nbsp; &nbsp; 'paged' &nbsp; &nbsp; =&gt; $paged, &nbsp;<br />
&nbsp; &nbsp; 'meta_query'=&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Сравниваем поле бюджет с цифрой, меньше которой записи не выводить<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'key' &nbsp; &nbsp; &nbsp; =&gt; '1Budget2',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'compare' &nbsp; =&gt; '&gt;=',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'value' &nbsp; &nbsp; =&gt; 100000000,<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'type' &nbsp;&nbsp; &nbsp; =&gt; 'numeric',<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Сравниваем, что не пустое. Если пустое - то не выводим.<br />
&nbsp; &nbsp; &nbsp; &nbsp; // 'meta_compare' =&gt; '!=',<br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; // Сортируем все записи по годам<br />
&nbsp; &nbsp; 'orderby' &nbsp; &nbsp;=&gt; 'meta_value_num',<br />
&nbsp; &nbsp; // От большего к меньшему<br />
&nbsp; &nbsp; 'order' &nbsp; &nbsp; &nbsp;=&gt; 'DESC', &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
);<br />
query_posts( $args ); <br />
?&gt;</div></div>
<h2>3. WP_Query PHP код для вывода постов в разделе РЕЙТИНГ</h2>
<p>Нижеследующий код выводит все статьи с произвольным полем год, сортируя по этому произвольному полю (от последнего года, до меньшего). Одновременно с этим исключает все записи из категорий меньше значения рейтинга 9.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
global $query_string;<br />
$paged = get_query_var( 'paged', 1 );<br />
$loop = new WP_Query( $args );<br />
$categoryvariable = $cat;<br />
$args = array(<br />
&nbsp; &nbsp; 'post_type' =&gt; 'post',<br />
&nbsp; &nbsp; 'cat' =&gt; $categoryvariable,<br />
&nbsp; &nbsp; // Выводим по произвольному полю<br />
&nbsp; &nbsp; 'meta_key' =&gt; '1Year',<br />
&nbsp; &nbsp; // Нужен для правильной работы пангинации<br />
&nbsp; &nbsp; 'paged' =&gt; $paged,<br />
&nbsp; &nbsp; 'meta_query'=&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Сравниваем поле РЕЙТИНГА с цифрой, меньше которой записи не выводить<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'key' &nbsp; &nbsp; &nbsp; =&gt; '1myRaiting',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'compare' &nbsp; =&gt; '&gt;=',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'value' &nbsp; &nbsp; =&gt; 9,<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'type' &nbsp;&nbsp; &nbsp; =&gt; 'numeric',<br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; // Сортируем все записи по годам<br />
&nbsp; &nbsp; 'orderby' &nbsp; &nbsp;=&gt; 'meta_value_num',<br />
&nbsp; &nbsp; // От большего к меньшему<br />
&nbsp; &nbsp; 'order' &nbsp; &nbsp; &nbsp;=&gt; 'DESC', &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
);<br />
query_posts( $args ); <br />
?&gt;</div></div>
<h2>4. WP_Query PHP код для вывода постов в КАТЕГОРИИ с ДАТОЙ</h2>
<p>В php коде ниже вводятся две переменные с ДАТАМИ. Текущая дата сравнивается с датой, которая будет в будущем. </p>
<p>Для чего это нужно? Например, я хочу вывести <strong>ТОВАРЫ</strong>, которые только <em>поступят в продажу</em> или <strong>ФИЛЬМЫ</strong>, которые только <em>выйдут в ближайшем будущем</em>. Если, например, такие ТОВАРЫ или ФИЛЬМЫ или ЧТО-ТО другое существует, то следует вывести ЗАПИСИ с этими произвольными полям. В противном случае в категории ничего не будет выводиться.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
global $query_string;<br />
$paged = get_query_var( 'paged', 1 );<br />
$loop = new WP_Query( $args );<br />
$categoryvariable = $cat;<br />
// Вводим свои значения<br />
// Текущая дата<br />
$date1 = date('Y-m-d');<br />
// Текущая дата + 12 месяцев<br />
$date2 = date('Y-m-d', strtotime('+12 month'));<br />
$args = array(<br />
'post_type' =&gt; 'post',<br />
'cat' =&gt; $categoryvariable, <br />
// Выводим по произвольному полю<br />
'meta_key' &nbsp;=&gt; 'premiere', <br />
// Нужен для правильной работы пангинации<br />
'paged' &nbsp; &nbsp; =&gt; $paged, <br />
'orderby' &nbsp; =&gt; 'meta_value', &nbsp; &nbsp;<br />
'order' &nbsp; &nbsp; =&gt; 'ASC',<br />
'meta_query'=&gt; array(<br />
&nbsp; &nbsp; 'key' &nbsp; &nbsp; &nbsp; =&gt; 'premiere',<br />
&nbsp; &nbsp; // Сравниваем значения двух дат<br />
&nbsp; &nbsp; 'value' &nbsp; &nbsp; =&gt; array($date1,$date2),<br />
&nbsp; &nbsp; // Обозначаем, что будет дата, формат ГодМесяцДень<br />
&nbsp; &nbsp; 'type'&nbsp; &nbsp; &nbsp; =&gt; 'DATE',<br />
&nbsp; &nbsp; // Сравниваем две даты, пример вывода: array('20500401','20500405') <br />
&nbsp; &nbsp; 'compare' &nbsp; =&gt; 'BETWEEN'<br />
&nbsp; &nbsp; // Сравниваем, что не пустое. Если пустое - то не выводим.<br />
&nbsp; &nbsp; // 'meta_compare' =&gt; '!=',<br />
), &nbsp; &nbsp; &nbsp; <br />
);<br />
query_posts( $args ); <br />
?&gt;</div></div>
<h2>5. WP_Query PHP код для вывода записей в разделе ТЕГОВ</h2>
<p>Вывод записей в тегах, в отличии от категорий, немного другой. По какой-то причине, в тегах не работает функция исключающая категории из WP_Query:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">'cat' =&gt; '-310'</div></div>
<p>К счастью, работает другая структура:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">'category__not_in' =&gt; '310'</div></div>
<p>И код вывода $wp_query для тегов будет такой:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
// Произвольное поле по которому будет сортировка<br />
$the_key = '1Year';<br />
$args = array(<br />
&nbsp; &nbsp; 'meta_key' =&gt; $the_key,<br />
&nbsp; &nbsp; // Сортируем по значению цифры в произвольном поле<br />
&nbsp; &nbsp; 'orderby' =&gt; 'meta_value_num',<br />
&nbsp; &nbsp; // Сортируем от большего к меньшему<br />
&nbsp; &nbsp; 'order' =&gt; 'DESC',<br />
&nbsp; &nbsp; // Исключаем категории<br />
&nbsp; &nbsp; 'category__not_in' =&gt; '310'<br />
);<br />
global $wp_query;<br />
query_posts(<br />
&nbsp; &nbsp; array_merge(<br />
&nbsp; &nbsp; &nbsp; &nbsp; $wp_query-&gt;query,<br />
&nbsp; &nbsp; &nbsp; &nbsp; $args<br />
&nbsp; &nbsp; )<br />
);<br />
?&gt;</div></div>
<h2>6. WP_Query PHP код для вывода записей в разделе ПОИСКА</h2>
<p>Для вывода WP_Query на странице поиска используем совершенно иной код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
// использую совместно с функцией SearchFilter в Functions.php<br />
$mySearch =&amp; new WP_Query(&quot;s=$s &amp; showposts=-1&quot;);<br />
// Подсчет количества найденного:<br />
$num = $mySearch-&gt;post_count;<br />
echo &quot;Найдено: &quot;;<br />
echo $num;<br />
echo &quot;записей&quot;;<br />
wp_reset_query(); <br />
?&gt;</div></div>
<p>Для специальной обработки запроса <strong>WP_Query</strong> в файле <strong>search.php</strong> добавляем в файл <strong>functions.php</strong> своей темы следующий код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Сортировка по годам для search.php<br />
function SearchFilter($query) {<br />
&nbsp; &nbsp; if ($query-&gt;is_search) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Ищет только в постах, но не на страницах<br />
&nbsp; &nbsp; &nbsp; &nbsp; $query-&gt;set('post_type', 'post');<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Происходит сортировка по году<br />
&nbsp; &nbsp; &nbsp; &nbsp; $query-&gt;set('meta_key', '1Year');<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Который является значением номера<br />
&nbsp; &nbsp; &nbsp; &nbsp; $query-&gt;set('orderby', 'meta_value_num');<br />
&nbsp; &nbsp; &nbsp; &nbsp; // И сортируется в обратном порядке<br />
&nbsp; &nbsp; &nbsp; &nbsp; $query-&gt;set('order', 'DESC');<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return $query;<br />
}<br />
add_filter('pre_get_posts','SearchFilter');</div></div>
<p>Он сортирует записи в категории <strong>ПОИСК</strong> по <strong>произвольному полю ГОДЫ</strong>.</p>
<h2>В заключение. Очень важно.</h2>
<p>После любого из перечисленных выше кодов (кроме того что в <strong>functions.php</strong>) нужно вывести следующую функцию:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;<br />
&lt;?php endwhile; ?&gt;<br />
&lt;? wp_reset_postdata(); ?&gt;<br />
&lt;?php else: ?&gt;<br />
&lt;?php endif; ?&gt;</div></div>
<p>Обязательная нужна такая конструкция:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;? wp_reset_postdata(); ?&gt;</div></div>
<p>Это необходимо, чтобы не выводить пустые страницы, когда <strong>следует исключить записи из определенных рубрик <em>на основании сравнения</em></strong>.</p>
<h2>7. Код для главной страницы (раздела) для вывода и РАЗДЕЛЕНИЯ записей по ТЕГАМ</h2>
<p>Следующая конструкция выводит записи из категории 27. Сортирует их случайно. Выводит 4 записи.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
global $query_string;<br />
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;<br />
$loop = new WP_Query( $args );<br />
$tagvariable = $tag;<br />
$args = 'tag=' . $tagvariable . '&amp;tag_id=27&amp;orderby=rand&amp;posts_per_page=4';<br />
query_posts( $args );<br />
?&gt;<br />
<br />
&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;<br />
<br />
&lt;?php get_template_part( '/random' ); ?&gt;<br />
<br />
&lt;?php endwhile; ?&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php wp_reset_query(); <br />
// Аннулирует данные произвольного запроса WP_Query <br />
// Если после цикла используется функция wp_reset_query() для &quot;сброса&quot; данных, <br />
// то wp_reset_postdata() использовать не нужно! <br />
?&gt;</div></div>
<p>В конструкции выше код отвечающий за вывод поста находится в отдельном файле:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php get_template_part( '/random' ); ?&gt;</div></div>
<div class="highlight">Вышеприведенную конструкцию можно размещать на главной или в любых других разделах сколько угодно раз.</div>
<h2>8. PHP для вывода и РАЗДЕЛЕНИЯ записей по РАЗДЕЛАМ</h2>
<p>Тот же самый код, но для вывода записей из РАЗДЕЛОВ, а не ТЕГОВ. Значения вывода (<strong>$args</strong>) изменены на другие. В том числе учтена пагинация (<strong>&#038;paged=&#8217;.$paged;</strong>), в конструкции выше она исключена из работы.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
global $query_string;<br />
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;<br />
$loop = new WP_Query( $args );<br />
$categoryvariable = $cat;<br />
$args = 'cat=' . $categoryvariable . '&amp;meta_key=1Year&amp;orderby=meta_value_num&amp;order=DESC&amp;paged='.$paged;<br />
query_posts( $args );<br />
?&gt;<br />
<br />
&lt;?php if (have_posts()) : while (have_posts()) : the_post(); ?&gt;<br />
<br />
&lt;?php get_template_part( '/random' ); ?&gt;<br />
<br />
&lt;?php endwhile; ?&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php wp_reset_query(); <br />
// Аннулирует данные произвольного запроса WP_Query <br />
// Если после цикла используется функция wp_reset_query() для &quot;сброса&quot; данных, <br />
// то wp_reset_postdata() использовать не нужно! <br />
?&gt;</div></div>
<h2>9. Выводим один конкретный пост</h2>
<p>Типовые конструкции для вывода одного определенного поста. В данном случае будет выведен пост с номером 1. Под конец wp_reset_postdata сбрасывает вывод WP_Query, так что можно выводить и любые другие посты.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$the_query = new WP_Query('p=1');<br />
<br />
while ($the_query-&gt;have_posts() ) : $the_query-&gt;the_post();<br />
<br />
the_content();<br />
<br />
edit_post_link(__('...', 'ploshadka.net'));<br />
<br />
endwhile;<br />
<br />
wp_reset_postdata();</div></div>
<h2 id="premiere_ru">10. Вывод записей с незаполненным произвольным полем</h2>
<p>Можно вывести записи с пустым значением в конкретном произвольном поле. Иногда такой способ помогает найти все записи с незаполненными значениями. Как альтернатива <a href="https://ploshadka.net/mysql-replacement/">поиска данных через MySQL</a>.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
$the_key = 'premiere_ru';<br />
$args = array(<br />
&nbsp; &nbsp; 'meta_query' =&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'key' =&gt; $the_key,<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'compare' =&gt; 'not exists',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'value' =&gt; null,<br />
&nbsp; &nbsp; &nbsp; &nbsp; ),<br />
&nbsp; &nbsp; )<br />
);<br />
<br />
global $wp_query;<br />
query_posts(<br />
&nbsp; &nbsp; array_merge(<br />
&nbsp; &nbsp; &nbsp; &nbsp; $wp_query-&gt;query,<br />
&nbsp; &nbsp; &nbsp; &nbsp; $args<br />
&nbsp; &nbsp; )<br />
);<br />
<br />
if ( have_posts() ) : while ( have_posts() ) : the_post();<br />
<br />
get_template_part( '/ploshadka.net' ); <br />
endwhile;<br />
endif;<br />
wp_reset_query();<br />
?&gt;</div></div>
<h2>11. Выводим одну конкретную страницу</h2>
<p>В заключение как можно вывести вместо записи содержимое страницы. Выводим страницу с ID 130:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$id = 130;<br />
$p = get_page($id);<br />
$t = $p-&gt;post_title;<br />
echo '&lt;h2 class=&quot;home-top-title&quot;&gt;'.apply_filters('post_title', $t).'&lt;/h2&gt;';<br />
echo apply_filters('the_content', $p-&gt;post_content);</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wp_query/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Создание своей идеальной темы для WordPress</title>
		<link>https://ploshadka.net/wordpress-themes/</link>
					<comments>https://ploshadka.net/wordpress-themes/#comments</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Fri, 22 Sep 2017 08:27:41 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[sidebar.php]]></category>
		<category><![CDATA[single.php]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<category><![CDATA[Размышления]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=2782</guid>

					<description><![CDATA[В один прекрасный момент я перестал использовать чужие темы для своих сайтов на WordPress и сделал свою собственную. Расскажу для чего может потребоваться своя тема. В этой статье я рассматриваю как верстать тему лишь отчасти. Она больше о философии вёрстки...]]></description>
										<content:encoded><![CDATA[<p>В один прекрасный момент я перестал использовать чужие темы для своих сайтов на WordPress и сделал свою собственную. Расскажу для чего может потребоваться своя тема. <span id="more-2782"></span></p>
<p>В этой статье я рассматриваю как верстать тему лишь отчасти. Она больше о философии вёрстки сайтов на WordPress и вообще вёрстки в целом.</p>
<h2>Разнообразие и ужас сторонних WordPress тем</h2>
<p>Для WordPress создано очень много тем. На любой вкус и цвет. И большинство из них имеет ряд недостатков.</p>
<h3>Много ненужных классов и стилей</h3>
<p>В погоне за универсальностью, в каждый шаблон вносят сотни функций и стилей. Многие названия стилей в темах даже не описываются в файлах стилей. А внедрены в тему, на всякий случай, если кто-то захочет изменить дизайн сайта. Предполагается, что это проще, не надо будет лезть в файлы шаблона и добавлять свои стили.</p>
<p>Другая значительная часть CSS правил, которые всё же прописаны в файле <strong>style.css</strong>, не используется. Потому что часть из них описывает вывод каких-нибудь сторонних плагинов, которую поддерживает тема, дополнительных менюшек, виджетов и Бог знает чего ещё. Предусмотрено всё что только задумал создатель такой WordPress темы.</p>
<h3>Сбросы настроек CSS</h3>
<p>Кроме того стили в файле style.css напичканы сбросами настроек, которые должны помочь сайту иметь правильный вид. Ведь куча различных элементов на одном сайте может привести к непредсказуемому результату, если заранее не сделать сброс всех параметров. </p>
<p>Что делает большая их часть мне, например, не всегда понятно. Изучать каждую непонятную строчку порой некогда, а верить, что так и должно быть не мой случай.</p>
<h3>Верстки с помощью фреймворков</h3>
<p>Стоит ли говорить, что большинство тем верстаются с помощью <strong>фреймворков (framework)</strong>, которые значительно ускоряют процесс вёрстки, но добавляют одновременно столько &#171;хлама&#187;, что потом копаться внутри темы без того же самого фреймворка просто невозможно. </p>
<h3>Чрезмерно усложнённая структура темы</h3>
<p>В результате CSS файл чужой WordPress темы разрастается до неимоверных размеров. А в самих файлах чего только нет.</p>
<p>Когда хочется что-то изменить, приходится рыскать среди большого количества непонятных функций и стилей. Отступ поправить и то сделать трудно. Правишь в одном месте, ничего не происходит, потому что это же свойство зачем-то дублируется и в других местах. Если спустя какое-то время всё-таки удаётся найти и поменять нужное свойство, то это может привести к неожиданным результатам. Где-то и что-то в дизайне &#171;поплывет&#187;.</p>
<p>А если хочется отцентрировать что-то, там смешиваются ещё десяток других стилей и обычные правила просто-напросто отказываются работать. Приходится искать на просторах Интернета другие <a href="https://ploshadka.net/css_center/">способы центровки</a> и ко всему этому внедрять <strong>!important;</strong>, который не желателен и в большинстве случае, если правильно верстать совсем не обязателен. </p>
<h2>Минусы чужих тем на WordPress</h2>
<p>Все эти сторонние темы создаются преимущественно для &#171;домохозяек&#187;, которым некогда и неинтересно разбираться в тонкостях <strong>html</strong> или <strong>css</strong>. В результате туда добавляют множество функций, которые я никогда не использовал. </p>
<p>Взять самое простое &#8212; добавление логотипа в виде изображения. Это можно сделать через панель администрирования сайта, если заранее была добавлена функция в шаблон темы сайта. А сейчас она добавлена практически везде.</p>
<p>Когда нужно поставить логотип в непредусмотренное для него место, от этой функции никакой пользы. А ведь для неё написаны десятки PHP строк только для того, чтобы пользователь мог добавить одно единственное изображение. Когда вместо этого, в нужном месте файла, достаточно прописать всего одну строчку:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;img src=&quot;&quot; alt=&quot;&quot;&gt;</div></div>
<p>И так по всем функциям. Много бесполезного для отдельно взятого человека. Напичкано всё подряд, ведь одному может понадобится одно, а другому другое.</p>
<p>Я также уже очень давно не использую виджеты через панель администрирования. Слишком мало свойств, по которым можно вывести желаемое меню. Либо надо использовать плагины, а это дополнительные ресурсы для сайта. Потому что, чтобы вывести блок ссылок в меню на сайте посредством плагина, в самом плагине требуется описать кучу функций.</p>
<p>Гораздо проще зайти в <strong>sidebar.php</strong> и вывести нужные рубрики обычным способом:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&nbsp; &nbsp; &lt;div class=&quot;widget&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3 class=&quot;widget-title&quot;&gt;Страны&lt;/h3&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;ul&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;?php<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $args = array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'title_li' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'orderby' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 'name',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'show_count' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'use_desc_for_title' =&gt; 0,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'exclude' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; '43,22', // исключены страны Африки<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'hide_empty' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 1,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // не обязательные<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'depth' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 1, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wp_list_categories($args);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/ul&gt;<br />
&nbsp; &nbsp; &lt;/div&gt;</div></div>
<p>В таком небольшом участке кода имеется и список нужных рубрик и требуемая сортировка и даже исключены неугодные категории. И всё это работает без какого-либо плагина. </p>
<h2>Минусы дочерних тем для WordPress</h2>
<p>Самым первым этапом моего использования WordPress была переделка понравившихся тем.</p>
<p>Затем я внедрял элементы в стороннюю тему, не меняя её, через подключения дополнительных файлов. Саму тему старался не модифицировать, на случай если захотелось бы её обновить, когда разработчики темы добавят в неё улучшения. </p>
<p>Однако со временем всё усложнялось так, что обновиться без головной боли и бессонных ночей уже не было возможности. Так что я ничего не трогал и со временем какие-то функции просто устаревали и генерировали ошибки. </p>
<p>И только спустя много лет я узнал о дочерних темах и понял, что раньше использовал костыли. Ведь можно не трогать файлы чужой темы, а модифицировать их копии в отдельной папке. </p>
<p>Но и у дочерних тем есть недостатки. Они имеют все те же минусы, что и обычные. И не только не уменьшают количество ненужных функций, а наоборот добавляются еще и файлы дочерней темы. В результате грузится еще больше всего.</p>
<h2>Преимущество своей WordPress темы</h2>
<p>Например, CSS текущей темы сайта, который свёрстан мною имеет всего лишь 30 кб. Там нет ни одного лишнего пункта, который бы не использовался. В теме также отсутствуют все PHP примочки, генерирующие множество ненужных свойств к каждому <strong>div</strong> элементу. Я уже не говорю о безумном количестве вложенных друг в друга div-ов, которые обычно присутствуют в чужих темах.</p>
<h3>Возможность применить минимализм в теме</h3>
<p>Во многих темах WordPress используются вставки <strong><?php post_class(); ?></strong>, которые в своей теме не нужны:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;article id=&quot;post-&lt;?php the_ID(); ?&gt;&quot; &lt;?php post_class(); ?&gt;&gt;<br />
<br />
&lt;div id=&quot;post-&lt;?php the_ID(); ?&gt;&quot; &lt;?php post_class(); ?&gt;&gt;</div></div>
<p>Они генерируют в стилях несколько атрибутов:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;article id=&quot;post-160&quot; class=&quot;post-160 page type-page status-publish hentry&quot;&gt;</div></div>
<p>При каких обстоятельствах может понадобиться в каждой статье такой набор стилей к одному элементу?</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">post-160 page type-page status-publish hentry</div></div>
<p>Разве что, если сайт свёрстан жутко криво. Ведь помимо этих стилей, над этим блочным элементом присутствует ещё несколько div-ов, зачастую имеющих не меньшее разнообразие стилей. </p>
<p>К чему всё так усложнять? В дальнейшем, чтобы что-то быстро изменить никакие <strong>инструменты разработчика в браузере (Inspect Element)</strong> не помогут. С таким-то намешенным количеством классов и стилей.</p>
<p>Зато когда сайт свёрстан тобою, ты можешь контролировать качество и минимализм свой темы. И тогда внутренность сайта будет предельно ясна.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/inspect.jpg" rel="lightbox-0"><img wpfc-lazyload-disable="true" decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/inspect-600x327.jpg" alt="" width="600" height="327" class="aligncenter size-medium wp-image-2795" srcset="https://ploshadka.net/wp-content/uploads/2782/inspect-600x327.jpg 600w, https://ploshadka.net/wp-content/uploads/2782/inspect-1200x653.jpg 1200w, https://ploshadka.net/wp-content/uploads/2782/inspect-300x163.jpg 300w, https://ploshadka.net/wp-content/uploads/2782/inspect.jpg 1742w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h3>Возможность создать свою более понятную структуру сайта</h3>
<p>Мне не нравится некоторые устоявшиеся названия для файлов принятых по-умолчанию в WordPress. Лучше слишком сильно не отходить от устоявшихся норм разработки, дабы всё наоборот не усложнить. Но если изменения существенно улучшают твоё понимание структуры и упрощают взаимодействие с файлами, то смело можно менять.</p>
<p>Для примера возьмём название файлов <strong>content.php</strong>, <strong>content-post.php</strong>, <strong>content-page.php</strong>, <strong>content-search.php</strong> и т.д. </p>
<p>Если тема очень простая и содержит минимум, то всё можно оставить как есть. Но когда тема разрастается и добавляются в неё разные функции, то эти <strong>content-post.php</strong> только путают. </p>
<p>Предположим, что <strong>шаблон страницы записи</strong> (статьи, post) разделен на несколько составляющих. Потому что если файл большой, удобнее распределить функции по разным файлам. И все эти файлы будут являться частью контента. И потом сиди и вспоминай, что у тебя в самом файле content.php, а что в других. </p>
<p>Я переименовал content.php в <strong>article.php</strong> и положил его в папку <strong>single</strong>. Сразу становится понятно, всё что находится в этом файле, лежит внутри секции стандартного тега <strong>article HTML</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;article&gt; &lt;/article&gt;</div></div>
<p>А сам файл article.php может быть разделен на другие составляющие, которые будут находится в подпапке article папки <strong>single</strong>. Или если это файлы для разделов, то в подпапке article папки <strong>archive</strong>. </p>
<p>То же самое, вместо стиля <strong>.entry-content</strong>, который определяет статью, меняем на название <strong>.archive-article</strong> или <strong>.single-article</strong>, в зависимости <strong>раздел</strong> ли это или <strong>запись</strong>. В итоге имеем структуру ясную как день и ночь. И даже если вы потом забудете что и где, достаточно посмотреть на одинаковые названия и понять что всё относится к одному и тому же.</p>
<p>Для примера покажу структуру одного из навороченных моих сайтов. Запихивать всё в один файл не вариант, потом невозможно что-то будет добавить или убрать. Я когда переделывал старую тему на новую, удалил множество устаревших и неиспользованных функций, которые раньше не мог увидеть из-за обилия информации в одном месте. Теперь же структура имеет подобающий и понятный вид:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/structure.jpg" rel="lightbox-1"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/structure-380x400.jpg" alt="" width="380" height="400" class="aligncenter size-medium wp-image-2806" srcset="https://ploshadka.net/wp-content/uploads/2782/structure-380x400.jpg 380w, https://ploshadka.net/wp-content/uploads/2782/structure-759x800.jpg 759w, https://ploshadka.net/wp-content/uploads/2782/structure-190x200.jpg 190w, https://ploshadka.net/wp-content/uploads/2782/structure.jpg 1329w" sizes="(max-width: 380px) 100vw, 380px" /></a></p>
<p>Даже если передать сайт другому человеку, он сможет быстро разобраться что и где находится. </p>
<p>По структуре папок можно понять, что всё что требуется, например, для <strong>разделов</strong> находится в папке <strong>archive</strong>. И если взглянуть на CSS, то там также будет очевидно, что стили описываются именно для разделов.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/archive-css.jpg" rel="lightbox-2"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/archive-css-370x400.jpg" alt="" width="370" height="400" class="aligncenter size-medium wp-image-2809" srcset="https://ploshadka.net/wp-content/uploads/2782/archive-css-370x400.jpg 370w, https://ploshadka.net/wp-content/uploads/2782/archive-css-740x800.jpg 740w, https://ploshadka.net/wp-content/uploads/2782/archive-css-185x200.jpg 185w, https://ploshadka.net/wp-content/uploads/2782/archive-css.jpg 1204w" sizes="(max-width: 370px) 100vw, 370px" /></a></p>
<p>При этом стили можно тоже описывать так, чтобы всегда было понятно, какой стиль относится к чему. Если например стиль заголовка находится выше стиля содержимого контейнера, то в файле <strong>style.css</strong> стиль заголовка должен идти выше. Вообще вся структура CSS должна идти от верхнего стиля к нижнему. Тогда всегда легко найти нужный элемент на сайте.</p>
<p>У вас могут быть свои предпочтения по иерархии или названиям файлов, главное чтобы в этом была четко прослеживаемая мысль и удобство, которого не было ранее. </p>
<h2>Про отступы в HTML и CSS</h2>
<p>Почему бы не придерживаться единого правила отступов? Например, каждый раз отступать либо от верхнего либо от нижнего элемента. Тогда и вносить новые элементы на сайт проще и править легче. Не стоит это применять абсолютно ко всему, иначе можно намучиться, но для большинства случаев это пойдет только на пользу.</p>
<p>А чтобы не вспоминать какие отступы и где, надо один раз для себя решить какой наследственности отступов придерживаться и какого размера. Вверху файла CSS можно отметить этот момент. </p>
<p>Также следует избегать использование отступов не кратных 5, если это не выравнивание иконок относительно текста. Нет никой надобности использовать <strong>padding</strong> или <strong>margin</strong> 14px вместо 15px или 23px вместо 25px. </p>
<p>В таком случае будет порядок. Везде одинаковые отступы, красивые и аккуратные. А в случае надобности, используя инструменты массовой замены, легко везде поменять отступы на другой размер.</p>
<h3>Отступы от заголовков H2, H3, параграфа или изображения</h3>
<p>В отступах вообще какая-то беда. Очень мало тем, где соблюдены единые стандарты отступов. Так чтобы это смотрелось красиво. Сейчас тенденция ставить <strong>margin</strong> побольше. Не сильно всматриваясь в пропорции отступов. Иногда, отступ заголовка от предыдущего абзаца меньше, чем от следующего. А так быть не должно.</p>
<p>Посмотрите на мой сайт <a href="https://ploshadka.net">ploshadka.net</a> и можете увидеть, что отступы тщательно вымерены и пропорционально соблюдены. Между изображениями и параграфами одинаковое расстояние. Нигде ничего не пляшет. Всё отцентрировано и аккуратно подведено. И для этого не нужны никакие фреймворки. Достаточно знать базовые вещи HTML и CSS. И применить их там, где не будут наслаиваться другие ненужные свойства, о которых я уже говорил.</p>
<h2>Как упростить создание свой WordPress темы</h2>
<p>Если верстать сайты на заказ, то вряд ли конечному пользователю захочется копаться во внутренних файлах сайта. Тогда использование всех WordPress фишек в ущерб минимализму, вполне оправданы. Для своих же любимых сайтов можно заморочиться, чтобы сделать всё с &#171;нуля&#187;. Тем более что с нуля то и не придётся делать.</p>
<p>Заходим на сайт <a href="http://underscores.me" rel="nofollow" target="_blank">underscores.me</a>, вводим в форму  желаемое название своей темы и скачиваем готовый шаблон.</p>
<p>Там будут самые необходимые файлы для WordPress темы. Внутри этих файлов будет основная структура и функции: вывод заголовков, навигации, меню и т.д.</p>
<p>Для перфекционистов вроде меня можно потереть всё непонятное и ненужное. Например, из файла <strong>functions.php</strong> можно удалить такую конструкцию:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function ploshadka_content_width() {<br />
&nbsp; &nbsp; $GLOBALS['content_width'] = apply_filters( 'ploshadka_content_width', 640 );<br />
}<br />
add_action( 'after_setup_theme', 'ploshadka_content_width', 0 );</div></div>
<p>Зачем она нужна можете прочитать в интернете, но обычно вносит только сложности.</p>
<p>Ещё удалить всё что непонятно (а значит не нужно). Удалить некоторую структуру из стилей, разбить файлы как удобнее лично тебе. Удалить ненужные файлы вроде <strong>rtl.css</strong>. Если только кто-то не собирается верстать сайт для тех кто читает справа на лево. И т.д. На конечном этапе получим файлы лишенные всего &#171;хлама&#187;.</p>
<p>Затем, если нет своего предпочтения в дизайне, смотрим другие сайты или уже готовые шаблоны в Интернете и верстаем на приготовленную базу что-то понравившееся себе. </p>
<h2>Скорость своей темы на WordPress</h2>
<p>Я переверстал дизайн темы, которая работала как дочерняя, в полностью отдельную тему. И сравнил скорость до и после обновления. Измерял сервисом <a href="https://tools.pingdom.com/" rel="nofollow" target="_blank">tools.pingdom.com</a>. Проверку осуществлял через <strong>Stockholm Sweden</strong>. </p>
<p>Скорость загрузки сайта, который работал вместе с дочерней темой:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/load-time-no-child.jpg" rel="lightbox-3"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/load-time-no-child-485x400.jpg" alt="" width="485" height="400" class="aligncenter size-medium wp-image-2787" srcset="https://ploshadka.net/wp-content/uploads/2782/load-time-no-child-485x400.jpg 485w, https://ploshadka.net/wp-content/uploads/2782/load-time-no-child-971x800.jpg 971w, https://ploshadka.net/wp-content/uploads/2782/load-time-no-child-243x200.jpg 243w, https://ploshadka.net/wp-content/uploads/2782/load-time-no-child.jpg 1699w" sizes="(max-width: 485px) 100vw, 485px" /></a></p>
<p><strong>Load Time</strong> &#8212; 60 секунд. Это какая-то катастрофа. Конечно сайт работал не так как определял сервис, а загружался в 1-4 секунды. Тем не менее, что-то pingdom.com никак не нравилось.</p>
<p>Затем загрузил свою разработанную тему с нуля. Как видно дизайн не сильно изменил, но при написании всей внутренней структуры не было заимствований из старой. В результате это совсем другой сайт, хотя дизайн оставил похожим. А скорость значительно изменилась:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/load-time-child.jpg" rel="lightbox-4"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/load-time-child-490x400.jpg" alt="" width="490" height="400" class="aligncenter size-medium wp-image-2788" srcset="https://ploshadka.net/wp-content/uploads/2782/load-time-child-490x400.jpg 490w, https://ploshadka.net/wp-content/uploads/2782/load-time-child-979x800.jpg 979w, https://ploshadka.net/wp-content/uploads/2782/load-time-child-245x200.jpg 245w, https://ploshadka.net/wp-content/uploads/2782/load-time-child.jpg 1714w" sizes="(max-width: 490px) 100vw, 490px" /></a></p>
<p><strong>Load Time</strong> в почти 4 секунды это тоже не мало. Но надо учитывать, что запрос проверяется из Швеции, а не из России, откуда приходят большинство пользователей. Плюс сайт достаточно многофункционален, также загрузка тормозится ещё и из-за сторонней рекламы.</p>
<p>Если рассмотреть текущий сайт <a href="https://ploshadka.net">ploshadka.net</a> имеющий те же самые основы, то можно увидеть, что он грузится значительно быстрее.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1.jpg" rel="lightbox-5"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1-499x400.jpg" alt="" width="499" height="400" class="aligncenter size-medium wp-image-2789" srcset="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1-499x400.jpg 499w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1-998x800.jpg 998w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1-250x200.jpg 250w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-1.jpg 1747w" sizes="(max-width: 499px) 100vw, 499px" /></a></p>
<p>А применив последние технологии кэширования, меньше секунды. И это при проверки из Швеции! А сайт находится в России.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2.jpg" rel="lightbox-6"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2-549x400.jpg" alt="" width="549" height="400" class="aligncenter size-medium wp-image-2790" srcset="https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2-549x400.jpg 549w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2-1097x800.jpg 1097w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2-274x200.jpg 274w, https://ploshadka.net/wp-content/uploads/2782/load-time-ploshadka-2.jpg 1920w" sizes="(max-width: 549px) 100vw, 549px" /></a></p>
<p>Однако сейчас кэширование использую частичное, иначе если компоновать js скрипты вместе, ужимать css, то могут возникать непредвиденные ляпы и нерабочие плагины на сайте. </p>
<p>Полторы секунды из Швеции тоже вполне хорошо. Потому что если верить pingdom.com, то это быстрее 75% сайтов. А это значит, грубо говоря, что из 10 сайтов мой работает быстрее 7-и из них.</p>
<p>Аналогично, можно достичь отличных показателей и для инструмента <a href="https://developers.google.com/speed/pagespeed/insights/?hl=ru" rel="nofollow" target="_blank">PageSpeed от Google</a></p>
<p><a href="https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka.jpg" rel="lightbox-7"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka-561x400.jpg" alt="" width="561" height="400" class="aligncenter size-medium wp-image-2792" srcset="https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka-561x400.jpg 561w, https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka-1123x800.jpg 1123w, https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka-281x200.jpg 281w, https://ploshadka.net/wp-content/uploads/2782/PageSpeed-ploshadka.jpg 1920w" sizes="(max-width: 561px) 100vw, 561px" /></a></p>
<p>Инструменты имеют погрешности в измерении. В разные проверки значения меняются, но примерно остаются на том же значении.</p>
<h2>Подводя итоги</h2>
<p>После всего сказанного выгоды от наличия своей разработанной темы должны быть очевидны. Но если её верстать теми же способами, какие используют большинство, то нет никакого смысла генерировать для себя ещё одного монстра. Можно просто скачать уже готовые и бесплатные темы. А вот если хочешь скорость, понятность и минимализм. Тогда создание своей темы &#8212; это идеальный выбор.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wordpress-themes/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Создание произвольных типов записей и таксономий</title>
		<link>https://ploshadka.net/post_types_and_taxonomy/</link>
					<comments>https://ploshadka.net/post_types_and_taxonomy/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 12 Aug 2017 10:01:07 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[Миниатюры]]></category>
		<category><![CDATA[Плагины для WordPress]]></category>
		<category><![CDATA[Произвольные поля]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=1603</guid>

					<description><![CDATA[Создаём произвольную таксономию для новостей в WordPress. В данной инструкции будет создан новый тип записей &#171;Новости&#187; и функционал для него. В том числе создание новых рубрик (разделов) для Новостей. Сначала создадим новую таксономию (отдельный список разделов). А затем новый тип...]]></description>
										<content:encoded><![CDATA[<p>Создаём произвольную таксономию для новостей в <strong>WordPress</strong>. В данной инструкции будет создан новый тип записей &#171;Новости&#187; и функционал для него. В том числе создание новых рубрик (разделов) для Новостей. <span id="more-1603"></span></p>
<div class="highlight">Сначала создадим новую таксономию (отдельный список разделов). А затем <strong>новый тип записей</strong>, отличный от уже существующих <strong>Записи</strong> и <strong>Страницы</strong>.</div>
<p>В предыдущем материале уже описывалось <a href="https://ploshadka.net/wordrpess_taxonomy_for_post/">создание новой таксономии (категории) для записи в WordPress</a>. Там добавлялись только новые категории. В данном же случае будет создана отдельный тип записей (параллельно стандартным записям) со своими таксономиями (категориями), без привязки к стандартной записи. </p>
<p>В панели администрирования меню WordPress появится новый тип записей и будет выгледеть он следующим образом:</p>
<p><a href="https://ploshadka.net/wp-content/uploads/1603/taxonomy_news_1.jpg" rel="lightbox-0"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/1603/taxonomy_news_1-197x400.jpg" alt="" width="197" height="400" class="aligncenter size-medium wp-image-1611" srcset="https://ploshadka.net/wp-content/uploads/1603/taxonomy_news_1-197x400.jpg 197w, https://ploshadka.net/wp-content/uploads/1603/taxonomy_news_1-98x200.jpg 98w, https://ploshadka.net/wp-content/uploads/1603/taxonomy_news_1.jpg 320w" sizes="(max-width: 197px) 100vw, 197px" /></a></p>
<div class="highlight">Новую таксономию можно оформить в виде нового плагина для WordPress. Это решение будет более эстетичным. Однако для удобства описания, чтобы всё не городить в одном месте и не усложнять, инструкция ниже будет дана по изменению файла <strong>functions.php</strong>.</div>
<h2>Создание новой таксономии</h2>
<p>По аналогии с <a href="https://ploshadka.net/wordrpess_taxonomy_for_post/">предыдущей статьёй</a> создаём новую таксономию для WordPress. Однако вместо таксономии для категорий &#171;Имен&#187; будет создана таксономия для категорий &#171;Новости&#187;.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Регистрация новой таксономии:<br />
add_action( 'init', 'create_snews', 0 );<br />
function create_snews () {<br />
$args = array(<br />
&nbsp; &nbsp; // Название таксономии<br />
&nbsp; &nbsp; 'label' =&gt; _x( 'Новости', 'taxonomy general name' ), <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Значения таксономии в админ-панели:<br />
&nbsp; &nbsp; 'labels' =&gt; array(<br />
&nbsp; &nbsp; // Общее название таксономии (множественное число). <br />
&nbsp; &nbsp; // По умолчанию: 'МеткИ' или 'РубрикИ'<br />
&nbsp; &nbsp; 'name' =&gt; _x( 'Новости', 'taxonomy general name' ), <br />
&nbsp; &nbsp; // Название таксономии (единственное число). <br />
&nbsp; &nbsp; // По умолчанию: 'МеткА' или 'РубрикА'<br />
&nbsp; &nbsp; 'singular_name' =&gt; _x( 'R', 'taxonomy singular name' ), <br />
&nbsp; &nbsp; // Название таксономии в пункте меню. <br />
&nbsp; &nbsp; 'menu_name' =&gt; __( 'Новостные рубрики' ), <br />
&nbsp; &nbsp; // По умолчанию: 'Все метки' или 'Все рубрики'<br />
&nbsp; &nbsp; 'all_items' =&gt; __( 'Все Новости' ),<br />
&nbsp; &nbsp; // Текст изменения таксономии на странице редактирования. <br />
&nbsp; &nbsp; // По умолчанию: 'Изменить метку' или 'Изменить рубрику'<br />
&nbsp; &nbsp; 'edit_item' =&gt; __( 'Изменить новость' ), <br />
&nbsp; &nbsp; // Текст в админ-панели на странице редактирования данной таксономии.<br />
&nbsp; &nbsp; // По умолчанию: 'Просмотреть метку' или 'Просмотреть рубрику'<br />
&nbsp; &nbsp; 'view_item' =&gt; __( 'Просмотреть Новости' ), <br />
&nbsp; &nbsp; // Текст обновления таксономии во вкладке свойства. <br />
&nbsp; &nbsp; // По умолчанию: 'Обновить метку' или 'Обновить рубрику'<br />
&nbsp; &nbsp; 'update_item' =&gt; __( 'Обновить новость' ), <br />
&nbsp; &nbsp; // Текст добавления новой таксономии при ее создании. <br />
&nbsp; &nbsp; // По умолчанию: 'Добавить новую метку' или 'Добавить новую рубрику'<br />
&nbsp; &nbsp; 'add_new_item' =&gt; __( 'Добавить новость' ), <br />
&nbsp; &nbsp; // Название таксономии при ее создании и редактировании. <br />
&nbsp; &nbsp; // По умолчанию: 'Название'<br />
&nbsp; &nbsp; 'new_item_name' =&gt; __( 'Название' ), <br />
&nbsp; &nbsp; // Текст родительской таксономии при создании и редактировании. <br />
&nbsp; &nbsp; // Для древовидных таксономий. <br />
&nbsp; &nbsp; // По умолчанию: Родительская.<br />
&nbsp; &nbsp; 'parent_item' =&gt; __( 'Родительская' ),<br />
&nbsp; &nbsp; // То же, что и parent_item, но с добавлением двоеточия. <br />
&nbsp; &nbsp; // По умолчанию: 'Родительская:'<br />
&nbsp; &nbsp; 'parent_item_colon' =&gt; __( 'Родительская:' ), <br />
&nbsp; &nbsp; // Текст в кнопке поиска на странице всех таксономий. <br />
&nbsp; &nbsp; // По умолчанию: 'Поиск меток' или 'Поиск рубрик'<br />
&nbsp; &nbsp; 'search_items' =&gt; __( 'Поиск новости' ),<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // ЧЕТЫРЕ НИЖНИХ параметра НЕ используется для древовидных таксономий:<br />
&nbsp; &nbsp; // Надпись популярных таксономий (на странице всех таксономий). <br />
&nbsp; &nbsp; // По умолчанию: Популярные метки или null.<br />
&nbsp; &nbsp; 'popular_items' =&gt; null, <br />
&nbsp; &nbsp; // Надпись разделения таксономий запятыми в метабоксе. <br />
&nbsp; &nbsp; // По умолчанию: Метки разделяются запятыми или null.<br />
&nbsp; &nbsp; 'separate_items_with_commas' =&gt; null, <br />
&nbsp; &nbsp; // Надпись добавления или удаления таксономий в метабоксе когда JavaScript отключен. <br />
&nbsp; &nbsp; // По умолчанию: Добавить или null.<br />
&nbsp; &nbsp; 'add_or_remove_items' =&gt; null, <br />
&nbsp; &nbsp; // Текст выбора из часто используемых таксономий в метабоксе. <br />
&nbsp; &nbsp; // По умолчанию: Выбрать из часто используемых или null.<br />
&nbsp; &nbsp; 'choose_from_most_used' =&gt; null, <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Текст в случае, если запрашиваемая таксономия не найдена. <br />
&nbsp; &nbsp; // По умолчанию: 'Меток не найдено. или 'Рубрик не найдено.<br />
&nbsp; &nbsp; 'not_found' =&gt; __( 'Новость не найдена.' ), <br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; // Если true, то таксономия становится доступной для использования.<br />
&nbsp; &nbsp; 'public' =&gt; true, <br />
&nbsp; &nbsp; // Доступность таксономии для управления в админ-панели, но не показывает ее в меню. <br />
&nbsp; &nbsp; // По умолчанию: 'public'.<br />
&nbsp; &nbsp; 'show_ui' =&gt; true, <br />
&nbsp; &nbsp; // Показывать таксономию в админ-меню. <br />
&nbsp; &nbsp; // Значение аргумента 'show_ui' должно быть true. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'show_ui'.<br />
&nbsp; &nbsp; 'show_in_menu' =&gt; true, <br />
&nbsp; &nbsp; // Добавляет или исключает таксономию в навигации сайта &quot;Внешний вид -&gt; Меню&quot;<br />
&nbsp; &nbsp; // По умолчанию: 'public'.<br />
&nbsp; &nbsp; 'show_in_nav_menus' =&gt; true, <br />
&nbsp; &nbsp; // Позволяет виджет 'Облако меток' использовать в таксономии. <br />
&nbsp; &nbsp; // По умолчанию: 'show_ui'.<br />
&nbsp; &nbsp; 'show_tagcloud' =&gt; true, <br />
&nbsp; &nbsp; // Показ таксономии в меню быстрого доступа. <br />
&nbsp; &nbsp; // По умолчанию: 'show_ui'.<br />
&nbsp; &nbsp; 'show_in_quick_edit' =&gt; true, <br />
&nbsp; &nbsp; // Обеспечивает показ метабокса с таксономией в записи. По умолчанию: null.<br />
&nbsp; &nbsp; 'meta_box_cb' =&gt; null, <br />
&nbsp; &nbsp; // Позволяет автоматическое создание столбцов таксономии в таблице ассоциативных типов постов. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; 'show_admin_column' =&gt; false,<br />
&nbsp; &nbsp; // Подключает описание таксономии в таблице со всеми таксономиями. По умолчанию: ''<br />
&nbsp; &nbsp; 'description' =&gt; '', <br />
&nbsp; &nbsp; // Делает таксономию древовидной как рубрики или недревовидной как метки. По умолчанию: false.<br />
&nbsp; &nbsp; 'hierarchical' =&gt; true, <br />
&nbsp; &nbsp; // Название функции, вызываемая после обновления ассоциативных типов объектов записи (поста)<br />
&nbsp; &nbsp; // Действует во многом как хук. <br />
&nbsp; &nbsp; // По умолчанию: ''.<br />
&nbsp; &nbsp; 'update_count_callback' =&gt; '', <br />
&nbsp; &nbsp; // Значение запроса. По умолчанию: true.<br />
&nbsp; &nbsp; 'query_var' =&gt; true, <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Перезапись URL. По умолчанию: true.<br />
&nbsp; &nbsp; 'rewrite' =&gt; array(<br />
&nbsp; &nbsp; // Текст в ЧПУ. По умолчанию: название таксономии.<br />
&nbsp; &nbsp; 'slug' =&gt; 'snews', <br />
&nbsp; &nbsp; // Позволяет ссылку добавить к базовому URL.<br />
&nbsp; &nbsp; 'with_front' =&gt; false,<br />
&nbsp; &nbsp; // Использовать (true) или не использовать (false) древовидную структуру ссылок. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; 'hierarchical' =&gt; true, <br />
&nbsp; &nbsp; // Перезаписывает конечное значение таксономии. По умолчанию: EP_NONE.<br />
&nbsp; &nbsp; 'ep_mask' =&gt; EP_NONE, <br />
),<br />
&nbsp; &nbsp; <br />
/*<br />
&nbsp; &nbsp; // Массив полномочий зарегестрированных пользователей:<br />
&nbsp; &nbsp; 'capabilities' =&gt; array(<br />
&nbsp; &nbsp; 'manage_terms' =&gt; 'manage_resource',<br />
&nbsp; &nbsp; 'edit_terms' &nbsp; =&gt; 'manage_categories',<br />
&nbsp; &nbsp; 'delete_terms' =&gt; 'manage_categories',<br />
&nbsp; &nbsp; 'assign_terms' =&gt; 'edit_posts',<br />
),<br />
*/<br />
<br />
&nbsp; &nbsp; // Должна ли таксономия запоминать порядок, в котором посты были созданы. <br />
&nbsp; &nbsp; // По умолчанию: null.<br />
&nbsp; &nbsp; 'sort' =&gt; null, <br />
&nbsp; &nbsp; // Является ли таксономия собственной или встроенной. <br />
&nbsp; &nbsp; // Рекомендация: не использовать этот аргумент при регистрации собственной таксономии. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; '_builtin' =&gt; false, <br />
);<br />
&nbsp; &nbsp; // Названия типов записей к которым будет привязана таксономия<br />
&nbsp; &nbsp; register_taxonomy( 'snews', array('news'), $args );<br />
}</div></div>
<h3>Создание шаблона для новой таксономии</h3>
<p>Для отображения новых категорий в корневой части своего шаблона WordPress создаём файл <strong>taxonomy-snews.php</strong>. Туда вносим содержимое файла <strong>archive.php</strong> с нужными изменениями.</p>
<p>Прописываем к нему пути в файле <strong>archive.php</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// категория таксономия<br />
elseif (is_tax(snews) ) {<br />
&nbsp; &nbsp; get_template_part( '/taxonomy-snews' );<br />
}</div></div>
<p>Как интегрируется этот код в общую структуру файла archive.php есть <a href="https://ploshadka.net/wordrpess_taxonomy_for_post/">в предыдущей статье в самом низу</a>.</p>
<h2>Создание произвольного типа записи</h2>
<p>Теперь создадим произвольный тип записи, которым будет являться <strong>&#171;Новости&#187;</strong>. Для этого в файл <strong>functions.php</strong> нужно добавить следующий код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Регистрация пользовательского типа записи:<br />
add_action( 'init', 'register_post_news', 0 );<br />
function register_post_news() {<br />
$args = array(<br />
&nbsp; &nbsp; // Название пользовательского типа записи во множественном числе. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'name' массива 'labels'.<br />
&nbsp; &nbsp; 'label' &nbsp;=&gt; _x( 'Новости', 'Post Type General Name', 'text_domain' ), <br />
&nbsp; &nbsp; 'labels' =&gt; array(<br />
&nbsp; &nbsp; // Общее название пользовательского типа записи во множественном числе. <br />
&nbsp; &nbsp; // Переопределяет значение 'label'. <br />
&nbsp; &nbsp; // По умолчанию: 'Записи' или 'Страницы'<br />
&nbsp; &nbsp; 'name' =&gt; _x( 'Новости', 'Post Type General Name', 'text_domain' ),<br />
&nbsp; &nbsp; // Название пользовательского типа записи в единственном числе. <br />
&nbsp; &nbsp; // По умолчанию: 'Запись' или 'Страница'<br />
&nbsp; &nbsp; 'singular_name' =&gt; _x( 'Новость', 'Post Type Singular Name', 'text_domain' ),<br />
&nbsp; &nbsp; // Текст добавления нового объекта типа записи в разделе 'Записи'/'Страницы' в админ-панели. <br />
&nbsp; &nbsp; // По умолчанию: 'Добавить новую'<br />
&nbsp; &nbsp; 'add_new' =&gt; __( 'Добавить новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст добавления нового объекта типа записи на странице создания. <br />
&nbsp; &nbsp; // По умолчанию: 'Добавить запись' или 'Добавить страницу'<br />
&nbsp; &nbsp; 'add_new_item' =&gt; __( 'Добавить новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст редактирования объекта типа записи на странице редактирования. <br />
&nbsp; &nbsp; // По умолчанию: 'Редактировать запись' или Редактировать страницу<br />
&nbsp; &nbsp; 'edit_item' =&gt; __( 'Редактировать новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст новой объекта типа записи. <br />
&nbsp; &nbsp; // По умолчанию: Новая запись или Новая страница<br />
&nbsp; &nbsp; 'new_item' =&gt; __( 'Новая новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст просмотра типа записи в админ-баре. <br />
&nbsp; &nbsp; // По умолчанию: 'Просмотреть запись' или 'Просмотреть страницу'<br />
&nbsp; &nbsp; 'view_item' =&gt; __( 'Просмотреть новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст на кнопке поиска объектов данного типа записи. <br />
&nbsp; &nbsp; // По умолчанию: 'Поиск записей' или 'Поиск страниц'<br />
&nbsp; &nbsp; 'search_items' =&gt; __( 'Поиск новостей', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст в случае отрицательного результата поиска объектов данного типа записи. <br />
&nbsp; &nbsp; // По умолчанию: 'Записей не найдено' или 'Страниц не найдено'<br />
&nbsp; &nbsp; 'not_found' =&gt; __( 'Новостей не найдено', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст в случае отрицательного результата поиска объектов данного типа записи в корзине. <br />
&nbsp; &nbsp; // По умолчанию: 'Записей в корзине не найдено' или 'Страниц в корзине не найдено'<br />
&nbsp; &nbsp; 'not_found_in_trash' =&gt; __( 'Новостей в корзине не найдено', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст при выборе родительской страницы. <br />
&nbsp; &nbsp; // Данный аргумент применяется только для древовидных типов записи. <br />
&nbsp; &nbsp; // По умолчанию: __( 'Родительская:', 'text_domain' ).<br />
&nbsp; &nbsp; 'parent_item_colon' =&gt; null, <br />
&nbsp; &nbsp; // Текст всех объектов типа записи в подменю. <br />
&nbsp; &nbsp; // По умолчанию: 'Все записи' или 'Все страницы<br />
&nbsp; &nbsp; 'all_items' =&gt; __( 'Все новости', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст архивов типа записи. <br />
&nbsp; &nbsp; // По умолчанию: 'Архивы записей' или 'Архивы страниц'<br />
&nbsp; &nbsp; 'archives' =&gt; __( 'Архивы новостей', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст добавления медиафайлов в объект типа записи во вкладке 'Добавить медиазапись'. <br />
&nbsp; &nbsp; // По умолчанию: 'Вставить в запись' или 'Вставить в страницу'<br />
&nbsp; &nbsp; 'insert_into_item' =&gt; __( 'Вставить в новость', 'text_domain' ),<br />
&nbsp; &nbsp; // Используется при просотре медиафайлов, прикрепленных к данному типу записи. <br />
&nbsp; &nbsp; // По умолчанию: _x( 'Загружен для:', 'text_domain' ).<br />
&nbsp; &nbsp; 'uploaded_to_this_item' =&gt; _x( 'Загружен для:', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст в метабоксе миниатюры на странице редактирования типа записи. <br />
&nbsp; &nbsp; // По умолчанию: 'Миниатюра записи'<br />
&nbsp; &nbsp; 'featured_image' =&gt; __( 'Миниатюра записи', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст для загрузки миниатюры. <br />
&nbsp; &nbsp; // По умолчанию: 'Задать миниатюру'<br />
&nbsp; &nbsp; 'set_featured_image' =&gt; __( 'Задать миниатюру', 'text_domain' ),<br />
&nbsp; &nbsp; // Текст для удаления миниатюры. <br />
&nbsp; &nbsp; // По умолчанию: 'Удалить миниатюру'<br />
&nbsp; &nbsp; 'remove_featured_image' =&gt; __( 'Удалить миниатюру', 'text_domain' ),<br />
&nbsp; &nbsp; // По умолчанию: 'Использовать миниатюру'<br />
&nbsp; &nbsp; 'use_featured_image' =&gt; __( 'Использовать миниатюру', 'text_domain' ),<br />
&nbsp; &nbsp; // Текст в пункте меню. По умолчанию: значение аргумента 'name'.<br />
&nbsp; &nbsp; 'menu_name' =&gt; __( 'Новости', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст в админ-баре во вкладке 'Добавить'. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'singular_name'.<br />
&nbsp; &nbsp; 'name_admin_bar' =&gt; __( 'Новость', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст Screen reader в заголовке в разделе всех записей/страниц. <br />
&nbsp; &nbsp; // По умолчанию: 'Список записей' или 'Список страниц'<br />
&nbsp; &nbsp; 'items_list' =&gt; __( 'Список новостей', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст Screen reader для постраничной навигации в разделе всех записей/страниц. <br />
&nbsp; &nbsp; // По умолчанию: 'Постраничная навигация'<br />
&nbsp; &nbsp; 'items_list_navigation' =&gt; __( 'Постраничная навигация', 'text_domain' ), <br />
&nbsp; &nbsp; // Текст Screen reader для фильтра в разделе всех записей/страниц. <br />
&nbsp; &nbsp; // По умолчанию: 'Фильтр'<br />
&nbsp; &nbsp; 'filter_items_list' =&gt; __( 'Фильтр', 'text_domain' ), <br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; // Короткое описание записи/страницы. По умолчанию: ''.<br />
&nbsp; &nbsp; 'description' =&gt; '', <br />
&nbsp; &nbsp; // Управление видимостью в админ-панели ('show_in_nav_menus', 'show_ui') <br />
&nbsp; &nbsp; // и во внешнем фронтэнде ('exclude_from_search', 'publicly_queryable'). <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; 'public' =&gt; true, <br />
&nbsp; &nbsp; // Исключить ли записи из результатов поиска фронтэнда. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'public'.<br />
&nbsp; &nbsp; 'exclude_from_search' =&gt; true,<br />
&nbsp; &nbsp; // Доступность на внешнем сайте: могут ли запросы быть выполненными во фронтэнде как часть parse_request(). <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'public'.<br />
&nbsp; &nbsp; 'publicly_queryable' =&gt; true, <br />
&nbsp; &nbsp; // Возможность управления данным пользовательским типом записи в админ-панели. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'public'.<br />
&nbsp; &nbsp; 'show_ui' =&gt; true, <br />
&nbsp; &nbsp; // Доступность данного пользовательского типа записи в навигационном меню сайта. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'public'.<br />
&nbsp; &nbsp; 'show_in_nav_menus' =&gt; true,<br />
&nbsp; &nbsp; // Показывать ли тип записи в админ-меню. Значение аргумента 'show_ui' должно быть true. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'show_ui'.<br />
&nbsp; &nbsp; 'show_in_menu' =&gt; true, <br />
&nbsp; &nbsp; // Показывать ли тип записи в админ-баре. По умолчанию: значение аргумента 'show_in_menu'.<br />
&nbsp; &nbsp; 'show_in_admin_bar' =&gt; true, <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Порядок расположения в админ-меню. Значение аргумента 'show_in_menu' должно быть true. <br />
&nbsp; &nbsp; // По умолчанию: null - после пункта 'Комментарии'.<br />
&nbsp; &nbsp; 'menu_position' =&gt; 5,<br />
&nbsp; &nbsp; /* Возможные значения:<br />
&nbsp; &nbsp; 5 - после пункта 'Записи';<br />
&nbsp; &nbsp; 10 - после пункта 'Медиафайлы';<br />
&nbsp; &nbsp; 20 - после пункта 'Страницы';<br />
&nbsp; &nbsp; 25 - после пункта 'Комментарии';<br />
&nbsp; &nbsp; 60 - после пункта 'Внешний вид';<br />
&nbsp; &nbsp; 65 - после пункта 'Плагины';<br />
&nbsp; &nbsp; 70 - после пункта 'Пользователи';<br />
&nbsp; &nbsp; 75 - после пункта 'Инструменты';<br />
&nbsp; &nbsp; 80 - после пункта 'Настройки'.<br />
&nbsp; &nbsp; */<br />
<br />
&nbsp; &nbsp; // URL для загрузки изображения в админ-меню. <br />
&nbsp; &nbsp; // По умолчанию: null - используется изображение пункта меню 'Записи'. <br />
&nbsp; &nbsp; // Ссылки на изображения доступны здесь: https://developer.wordpress.org/resource/dashicons/ &nbsp;<br />
&nbsp; &nbsp; 'menu_icon' =&gt; 'dashicons-editor-textcolor', <br />
<br />
&nbsp; &nbsp; /* Массив полномочий зарегестрированных пользователей для этого типа записи:<br />
&nbsp; &nbsp; 'capability_type' =&gt; 'post',<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'capabilities' =&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'edit_post' =&gt; 'edit_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'read_post' =&gt; 'read_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'delete_post' =&gt; 'delete_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'edit_posts' =&gt; 'edit_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'edit_others_posts' =&gt; 'edit_others_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'publish_posts' =&gt; 'publish_news', &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'read_private_posts' =&gt; 'read_private_news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; 'create_posts' =&gt; 'edit_news', <br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; */<br />
<br />
&nbsp; &nbsp; // Использовать ли внутренние значения по умолчанию для управления правами. <br />
&nbsp; &nbsp; // По умолчанию: null.<br />
&nbsp; &nbsp; 'map_meta_cap' =&gt; null, <br />
&nbsp; &nbsp; // Является ли тип записи иерархическим (т.е. страницей). <br />
&nbsp; &nbsp; // Позволяет установливать родительскую страницу. По умолчанию: false.<br />
&nbsp; &nbsp; 'hierarchical' =&gt; false, <br />
<br />
&nbsp; &nbsp; // Управление полями для редактирования объекта типа записи. <br />
&nbsp; &nbsp; // По умолчанию: значения 'title' и 'editor'.<br />
&nbsp; &nbsp; 'supports' =&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'title', // Заголовок объекта типа записи.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'editor', // Редактор контента.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'author', // Автор.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'thumbnail', // Миниатюра.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'excerpt', // Цитата, отрывок.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'trackbacks', // Отправить обратные ссылки.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'custom-fields', // Произвольные поля.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'comments', // Комментарии.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'revisions', // Сохраняет версии.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'page-attributes', // Атрибуты.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'post-formats', // Формат записи.<br />
&nbsp; &nbsp; ),<br />
<br />
&nbsp; &nbsp; // Обеспечивает обратный вызов функции, которая требуется при настройке метабоксов в разделе редактирования. <br />
&nbsp; &nbsp; // По умолчанию: null.<br />
&nbsp; &nbsp; 'register_meta_box_cb' =&gt; null, <br />
&nbsp; &nbsp; // Массив связанных таксономий для данного типа записи. <br />
&nbsp; &nbsp; // Пользовательскую таксономию необходимо зарегестрировать через функцию register_taxonomy(). <br />
&nbsp; &nbsp; // По умолчанию: без таксономий.<br />
&nbsp; &nbsp; 'taxonomies' =&gt; array('snews'), <br />
&nbsp; &nbsp; // Включает архивы данного типа записи. <br />
&nbsp; &nbsp; // Будет использоваться значение $post_type как ярлык архива по умолчанию. По умолчанию: false<br />
&nbsp; &nbsp; 'has_archive' =&gt; false, <br />
<br />
&nbsp; &nbsp; // Возможность перезаписи для данного типа записи. <br />
&nbsp; &nbsp; // Для предотвращения перезаписи, используют значение false. <br />
&nbsp; &nbsp; // По умолчанию: true и значение $post_type используется как ярлык.<br />
&nbsp; &nbsp; 'rewrite' =&gt; array(<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Текст в ссылке. По умолчанию: значение $post_type.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'slug' =&gt; 'news', <br />
&nbsp; &nbsp; &nbsp; &nbsp; // Должна ли структура ссылки быть с базовым URL. <br />
&nbsp; &nbsp; &nbsp; &nbsp; // Пример: если структура ссылки /blog/, <br />
&nbsp; &nbsp; &nbsp; &nbsp; // то ссылка при соответствующих параметрах 'with_front' <br />
&nbsp; &nbsp; &nbsp; &nbsp; // выглядит так: false-&gt;/news/, true-&gt;/blog/news/ <br />
&nbsp; &nbsp; &nbsp; &nbsp; // По умолчанию: true.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'with_front' =&gt; false, <br />
&nbsp; &nbsp; &nbsp; &nbsp; // Должна ли структура постоянных ссылок быть встроена для этого типа записи. <br />
&nbsp; &nbsp; &nbsp; &nbsp; // По умолчанию: значение 'has_archive'.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'feeds' =&gt; false,<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Должна ли структура ссылок обеспечена быть постраничной навигацией. <br />
&nbsp; &nbsp; &nbsp; &nbsp; // По умолчанию: true.<br />
&nbsp; &nbsp; &nbsp; &nbsp; 'pages' =&gt; true, <br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Перезаписывает конечное значение. По умолчанию: EP_PERMALINK.<br />
&nbsp; &nbsp; 'permalink_epmask' =&gt; EP_PERMALINK,<br />
&nbsp; &nbsp; // Задается значение запроса для данного типа записи. <br />
&nbsp; &nbsp; //&nbsp; По умолчанию: true - задается значение $post_type.<br />
&nbsp; &nbsp; 'query_var' =&gt; true,<br />
&nbsp; &nbsp; // Возможность данного типа записи быть экспортированным. По умолчанию: true.<br />
&nbsp; &nbsp; 'can_export' =&gt; true,<br />
&nbsp; &nbsp; // Удалять ли записи данного типа при удалении их автора. По умолчанию: null.<br />
&nbsp; &nbsp; 'delete_with_user' =&gt; null,<br />
&nbsp; &nbsp; // Представлять ли этот тип записи в REST API. По умолчанию: false.<br />
&nbsp; &nbsp; 'show_in_rest' =&gt; false,<br />
&nbsp; &nbsp; // Базовый ярлык данного типа записи когда доступно использование REST API. <br />
&nbsp; &nbsp; //&nbsp; По умолчанию: значение $post_type.<br />
&nbsp; &nbsp; 'rest_base' =&gt; $post_type,<br />
&nbsp; &nbsp; // Является ли этот тип записи собственным или встроенным. <br />
&nbsp; &nbsp; //&nbsp; Рекомендация: не использовать этот аргумент при регистрации собственного типа сообщения. По умолчанию: false.<br />
&nbsp; &nbsp; '_builtin' =&gt; false,<br />
);<br />
register_post_type( 'news', $args );<br />
}</div></div>
<h3>Создание шаблона для нового типа записей</h3>
<p>Создаём в директории шаблона своего сайта на WordPress файл <strong>single-news.php</strong>. И вставляем туда содержимое файла <strong>single.php</strong> с теми изменениями, которые вам нужны в дизайне новостей.</p>
<h2>Дружелюбные URL в своей таксономии</h2>
<p>Если на сайте включены человекопонятные URL (ЧПУ), то для работы новых таксономий WordPress обязательно нужно добавить в файл <strong>functions.php</strong> следующий php:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// НЕОБХОДИМА для ссылок ЧПУ, иначе страница с категорией будет не найдена<br />
// Удаление slug таксономии:<br />
function taxonomy_link( $link, $term, $taxonomy ) {<br />
&nbsp; &nbsp; if ( $taxonomy !== 'snews' )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return $link;<br />
&nbsp; &nbsp; return str_replace( 'snews/snews/', '', $link );<br />
}<br />
add_filter( 'term_link', 'taxonomy_link', 10, 3 );<br />
<br />
// Редирект:<br />
function taxonomy_rewrite_rule() {<br />
&nbsp; &nbsp; add_rewrite_rule('allnews/?$', 'index.php?snews=allnews', 'top');<br />
}<br />
add_action('init', 'taxonomy_rewrite_rule');</div></div>
<p>После всех манипуляций с произвольным типом записей в файле functions.php, если у вас ЧПУ ссылки, надо обновить их структуру. Для этого заходим в административной части WordPress по ссылке: <strong>&#171;Настройки&#187; > &#171;Постоянные ссылки&#187;</strong>. И там ничего не меняя, нажимаем кнопку <strong>&#171;сохранить изменения&#187;</strong>.</p>
<p>Если этого не сделать, то новые страницы на сайте с записями новых статей и таксономий этих статей (категорий) не будут найдены. </p>
<p>Вышеприведенный код работает при следующей настройке в постоянных ссылках WordPress:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http://site_name.ru/%post_id%/</div></div>
<p>Новые записи выглядят следующим образом:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http://site_name.ru/news/novost_odin/</div></div>
<p>А новые категории показываются так:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http://site_name.ru/snews/rubrika_odin/</div></div>
<h2>Необходимые дополнения для произвольных типов записей</h2>
<p>Отдельно читайте как добавить <a href="https://ploshadka.net/wordpress_thumbnails/">поддержку миниатюр в произвольный тип записей</a>.</p>
<p>Если вам нужно вывести какие-нибудь данные (на подобии <strong>is_single</strong>), в зависимости от типа произвольных данных, то нужно использовать <strong>is_singular</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if ( is_singular( array( 'news', 'article' ) ) ) {?&gt;<br />
<br />
&lt;?php } ?&gt;</div></div>
<p>где <strong>news</strong> и <strong>article</strong> &#8212; типы произвольных полей.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/post_types_and_taxonomy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Создание своей таксономии в WordPress (ЧПУ ссылки)</title>
		<link>https://ploshadka.net/wordrpess_taxonomy_for_post/</link>
					<comments>https://ploshadka.net/wordrpess_taxonomy_for_post/#comments</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 12 Aug 2017 10:00:06 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[Миниатюры]]></category>
		<category><![CDATA[Плагины для WordPress]]></category>
		<category><![CDATA[Произвольные поля]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=1588</guid>

					<description><![CDATA[Создаём свою произвольную таксономию на WordPress к типу записи &#8212; post. В этой статье мы создаём новый список разделов, отличный от уже существующих: Рубрик и Меток. Имеем следующую задачу. Нужна новая таксономия в разделе &#171;Записи&#187;. Она будет называться &#171;Имена&#187;. Например,...]]></description>
										<content:encoded><![CDATA[<p>Создаём свою произвольную таксономию на <strong>WordPress</strong> к типу записи &#8212; <strong>post</strong>. <span id="more-1588"></span></p>
<div class="highlight">В этой статье мы создаём <strong>новый список разделов</strong>, отличный от уже существующих: <strong>Рубрик</strong> и <strong>Меток</strong>. </div>
<p>Имеем следующую задачу. Нужна новая таксономия в разделе <strong>&#171;Записи&#187;</strong>. Она будет называться <strong>&#171;Имена&#187;</strong>. Например, чтобы создать категории для имён актёров в кино. </p>
<p>Если нужно полностью создать новый тип записей со своими таксономиями (категориями), а не просто добавить в стандартную запись новые таксономии, то для этого есть другая статья: <a href="https://ploshadka.net/post_types_and_taxonomy/">Создание произвольных типов записей и таксономий в WordPress</a>.</p>
<p>Когда таксономия &#171;Имена&#187; будет введена, при создании новой записи появится новый блок категорий имен актёров.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_1.jpg" rel="lightbox-0"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_1-536x400.jpg" alt="" width="536" height="400" class="aligncenter size-medium wp-image-1592" srcset="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_1-536x400.jpg 536w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_1-268x200.jpg 268w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_1.jpg 600w" sizes="(max-width: 536px) 100vw, 536px" /></a></p>
<div class="highlight">Новую таксономию можно оформить в виде нового плагина для WordPress. Это решение будет более эстетичным. Однако для удобства описания, чтобы всё не городить в одном месте и не усложнять, инструкция ниже будет дана по изменению файла <strong>functions.php</strong>.</div>
<p>Для реализации этой задачи, в файл <strong>functions.php</strong> своей темы нужно добавить следующий блок php кода:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Регистрация новой таксономии:<br />
add_action( 'init', 'create_taxname', 0 );<br />
function create_taxname () {<br />
$args = array(<br />
&nbsp; &nbsp; // Название таксономии<br />
&nbsp; &nbsp; 'label' =&gt; _x( 'Имена', 'taxonomy general name' ), <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Значения таксономии в админ-панели:<br />
&nbsp; &nbsp; 'labels' =&gt; array(<br />
&nbsp; &nbsp; // Общее название таксономии (множественное число). <br />
&nbsp; &nbsp; // По умолчанию: 'МеткИ' или 'РубрикИ'<br />
&nbsp; &nbsp; 'name' =&gt; _x( 'Имена', 'taxonomy general name' ), <br />
&nbsp; &nbsp; // Название таксономии (единственное число). <br />
&nbsp; &nbsp; // По умолчанию: 'МеткА' или 'РубрикА'<br />
&nbsp; &nbsp; 'singular_name' =&gt; _x( 'Имена', 'taxonomy singular name' ), <br />
&nbsp; &nbsp; // Название таксономии в пункте меню. <br />
&nbsp; &nbsp; 'menu_name' =&gt; __( 'Имена' ), <br />
&nbsp; &nbsp; // По умолчанию: 'Все метки' или 'Все рубрики'<br />
&nbsp; &nbsp; 'all_items' =&gt; __( 'Все Имена' ),<br />
&nbsp; &nbsp; // Текст изменения таксономии на странице редактирования. <br />
&nbsp; &nbsp; // По умолчанию: 'Изменить метку' или 'Изменить рубрику'<br />
&nbsp; &nbsp; 'edit_item' =&gt; __( 'Изменить имя' ), <br />
&nbsp; &nbsp; // Текст в админ-панели на странице редактирования данной таксономии.<br />
&nbsp; &nbsp; // По умолчанию: 'Просмотреть метку' или 'Просмотреть рубрику'<br />
&nbsp; &nbsp; 'view_item' =&gt; __( 'Просмотреть Имена' ), <br />
&nbsp; &nbsp; // Текст обновления таксономии во вкладке свойства. <br />
&nbsp; &nbsp; // По умолчанию: 'Обновить метку' или 'Обновить рубрику'<br />
&nbsp; &nbsp; 'update_item' =&gt; __( 'Обновить имя' ), <br />
&nbsp; &nbsp; // Текст добавления новой таксономии при ее создании. <br />
&nbsp; &nbsp; // По умолчанию: 'Добавить новую метку' или 'Добавить новую рубрику'<br />
&nbsp; &nbsp; 'add_new_item' =&gt; __( 'Добавить новое имя' ), <br />
&nbsp; &nbsp; // Название таксономии при ее создании и редактировании. <br />
&nbsp; &nbsp; // По умолчанию: 'Название'<br />
&nbsp; &nbsp; 'new_item_name' =&gt; __( 'Название' ), <br />
&nbsp; &nbsp; // Текст родительской таксономии при создании и редактировании. <br />
&nbsp; &nbsp; // Для древовидных таксономий. <br />
&nbsp; &nbsp; // По умолчанию: Родительская.<br />
&nbsp; &nbsp; 'parent_item' =&gt; __( 'Родительская' ),<br />
&nbsp; &nbsp; // То же, что и parent_item, но с добавлением двоеточия. <br />
&nbsp; &nbsp; // По умолчанию: 'Родительская:'<br />
&nbsp; &nbsp; 'parent_item_colon' =&gt; __( 'Родительская:' ), <br />
&nbsp; &nbsp; // Текст в кнопке поиска на странице всех таксономий. <br />
&nbsp; &nbsp; // По умолчанию: 'Поиск меток' или 'Поиск рубрик'<br />
&nbsp; &nbsp; 'search_items' =&gt; __( 'Поиск имени' ),<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // ЧЕТЫРЕ НИЖНИХ параметра НЕ используется для древовидных таксономий:<br />
&nbsp; &nbsp; // Надпись популярных таксономий (на странице всех таксономий). <br />
&nbsp; &nbsp; // По умолчанию: Популярные метки или null.<br />
&nbsp; &nbsp; 'popular_items' =&gt; null, <br />
&nbsp; &nbsp; // Надпись разделения таксономий запятыми в метабоксе. <br />
&nbsp; &nbsp; // По умолчанию: Метки разделяются запятыми или null.<br />
&nbsp; &nbsp; 'separate_items_with_commas' =&gt; null, <br />
&nbsp; &nbsp; // Надпись добавления или удаления таксономий в метабоксе когда JavaScript отключен. <br />
&nbsp; &nbsp; // По умолчанию: Добавить или null.<br />
&nbsp; &nbsp; 'add_or_remove_items' =&gt; null, <br />
&nbsp; &nbsp; // Текст выбора из часто используемых таксономий в метабоксе. <br />
&nbsp; &nbsp; // По умолчанию: Выбрать из часто используемых или null.<br />
&nbsp; &nbsp; 'choose_from_most_used' =&gt; null, <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Текст в случае, если запрашиваемая таксономия не найдена. <br />
&nbsp; &nbsp; // По умолчанию: 'Меток не найдено. или 'Рубрик не найдено.<br />
&nbsp; &nbsp; 'not_found' =&gt; __( 'Имя не найдено.' ), <br />
&nbsp; &nbsp; ),<br />
&nbsp; &nbsp; // Если true, то таксономия становится доступной для использования.<br />
&nbsp; &nbsp; 'public' =&gt; true, <br />
&nbsp; &nbsp; // Доступность таксономии для управления в админ-панели, но не показывает ее в меню. <br />
&nbsp; &nbsp; // По умолчанию: 'public'.<br />
&nbsp; &nbsp; 'show_ui' =&gt; true, <br />
&nbsp; &nbsp; // Показывать таксономию в админ-меню. <br />
&nbsp; &nbsp; // Значение аргумента 'show_ui' должно быть true. <br />
&nbsp; &nbsp; // По умолчанию: значение аргумента 'show_ui'.<br />
&nbsp; &nbsp; 'show_in_menu' =&gt; true, <br />
&nbsp; &nbsp; // Добавляет или исключает таксономию в навигации сайта &quot;Внешний вид -&gt; Меню&quot;<br />
&nbsp; &nbsp; // По умолчанию: 'public'.<br />
&nbsp; &nbsp; 'show_in_nav_menus' =&gt; true, <br />
&nbsp; &nbsp; // Позволяет виджет 'Облако меток' использовать в таксономии. <br />
&nbsp; &nbsp; // По умолчанию: 'show_ui'.<br />
&nbsp; &nbsp; 'show_tagcloud' =&gt; true, <br />
&nbsp; &nbsp; // Показ таксономии в меню быстрого доступа. <br />
&nbsp; &nbsp; // По умолчанию: 'show_ui'.<br />
&nbsp; &nbsp; 'show_in_quick_edit' =&gt; true, <br />
&nbsp; &nbsp; // Обеспечивает показ метабокса с таксономией в записи. По умолчанию: null.<br />
&nbsp; &nbsp; 'meta_box_cb' =&gt; null, <br />
&nbsp; &nbsp; // Позволяет автоматическое создание столбцов таксономии в таблице ассоциативных типов постов. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; 'show_admin_column' =&gt; false,<br />
&nbsp; &nbsp; // Подключает описание таксономии в таблице со всеми таксономиями. По умолчанию: ''<br />
&nbsp; &nbsp; 'description' =&gt; '', <br />
&nbsp; &nbsp; // Делает таксономию древовидной как рубрики или недревовидной как метки. По умолчанию: false.<br />
&nbsp; &nbsp; 'hierarchical' =&gt; true, <br />
&nbsp; &nbsp; // Название функции, вызываемая после обновления ассоциативных типов объектов записи (поста)<br />
&nbsp; &nbsp; // Действует во многом как хук. <br />
&nbsp; &nbsp; // По умолчанию: ''.<br />
&nbsp; &nbsp; 'update_count_callback' =&gt; '', <br />
&nbsp; &nbsp; // Значение запроса. По умолчанию: true.<br />
&nbsp; &nbsp; 'query_var' =&gt; true, <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // Перезапись URL. По умолчанию: true.<br />
&nbsp; &nbsp; 'rewrite' =&gt; array(<br />
&nbsp; &nbsp; // Текст в ЧПУ. По умолчанию: название таксономии.<br />
&nbsp; &nbsp; 'slug' =&gt; 'person', <br />
&nbsp; &nbsp; // Позволяет ссылку добавить к базовому URL.<br />
&nbsp; &nbsp; 'with_front' =&gt; false,<br />
&nbsp; &nbsp; // Использовать (true) или не использовать (false) древовидную структуру ссылок. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; 'hierarchical' =&gt; true, <br />
&nbsp; &nbsp; // Перезаписывает конечное значение таксономии. По умолчанию: EP_NONE.<br />
&nbsp; &nbsp; 'ep_mask' =&gt; EP_NONE, <br />
),<br />
&nbsp; &nbsp; <br />
/*<br />
&nbsp; &nbsp; // Массив полномочий зарегестрированных пользователей:<br />
&nbsp; &nbsp; 'capabilities' =&gt; array(<br />
&nbsp; &nbsp; 'manage_terms' =&gt; 'manage_resource',<br />
&nbsp; &nbsp; 'edit_terms' &nbsp; =&gt; 'manage_categories',<br />
&nbsp; &nbsp; 'delete_terms' =&gt; 'manage_categories',<br />
&nbsp; &nbsp; 'assign_terms' =&gt; 'edit_posts',<br />
),<br />
*/<br />
<br />
&nbsp; &nbsp; // Должна ли таксономия запоминать порядок, в котором посты были созданы. <br />
&nbsp; &nbsp; // По умолчанию: null.<br />
&nbsp; &nbsp; 'sort' =&gt; null, <br />
&nbsp; &nbsp; // Является ли таксономия собственной или встроенной. <br />
&nbsp; &nbsp; // Рекомендация: не использовать этот аргумент при регистрации собственной таксономии. <br />
&nbsp; &nbsp; // По умолчанию: false.<br />
&nbsp; &nbsp; '_builtin' =&gt; false, <br />
);<br />
&nbsp; &nbsp; // Названия типов записей к которым будет привязана таксономия<br />
&nbsp; &nbsp; register_taxonomy( 'person', array('post'), $args );<br />
}</div></div>
<p>Теперь в разделе записи появится новая категория записей с названием Имена. Здесь можно будет добавить новых актёров.</p>
<p><a href="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2.jpg" rel="lightbox-1"><img decoding="async" loading="lazy" src="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2-580x400.jpg" alt="" width="580" height="400" class="aligncenter size-medium wp-image-1596" srcset="https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2-580x400.jpg 580w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2-1161x800.jpg 1161w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2-270x186.jpg 270w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2-290x200.jpg 290w, https://ploshadka.net/wp-content/uploads/1588/taxonomy_name_2.jpg 1200w" sizes="(max-width: 580px) 100vw, 580px" /></a></p>
<h2>Читабельные ссылки (ЧПУ) в своей произвольной таксономии</h2>
<p>Если во вкладке <strong>&#171;Настройки постоянных ссылок&#187;</strong> (меню навигации в админ панели WordPress: <strong>&#171;Настройки&#187; > &#171;Постоянные ссылки&#187;</strong>) выставлены настройки для показа пользователям &#171;дружественных URL&#187; (т.е. ЧПУ ссылок / человекопонятный урл / friendly url), то для работы новой таксономии обязательно требуется добавить следующий php код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// НЕОБХОДИМА для ссылок ЧПУ, иначе страница с категорией будет не найдена<br />
// Удаление slug таксономии:<br />
function taxonomy_link( $link, $term, $taxonomy ) {<br />
&nbsp; &nbsp; if ( $taxonomy !== 'person' )<br />
&nbsp; &nbsp; &nbsp; &nbsp; return $link;<br />
&nbsp; &nbsp; return str_replace( 'person/person/', '', $link );<br />
}<br />
add_filter( 'term_link', 'taxonomy_link', 10, 3 );</div></div>
<p>Кроме того, после внесения изменений в новую таксономию в файле <strong>functions.php</strong>, обязательно нужно &#171;сохранить изменения&#187; на странице админ панели WordPress: <strong>&#171;Настройки&#187; > &#171;Постоянные ссылки&#187;</strong>. Иначе страница категорий с новой таксономии будет не найдена. </p>
<p>В данном случае таксономия работает при следующей настройке в постоянных ссылках:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http://site_name.ru/%post_id%/</div></div>
<h2>Создание шаблона для таксономии</h2>
<p>Для показа новых рубрик таксономии нужно создать следующий файл – <strong>taxonomy-person.php</strong>. В файле <strong>archive.php</strong> указываем путь к шаблону для новой рубрики таксономии. В моём случае, шаблон для таксономии, лежит в корневой директории шаблона <strong>WordPress</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// категория таксономия<br />
elseif (is_tax(person) ) {<br />
&nbsp; &nbsp; get_template_part( '/taxonomy-person' );<br />
}</div></div>
<p>Данный код имеет силу в общем шаблоне вида:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
// Если это конкретные категории<br />
if (is_category(array('102','103','104')) ) {<br />
&nbsp; &nbsp; get_template_part( '/archives/raitings' );<br />
}<br />
<br />
// категория таксономии<br />
elseif (is_tax(person) ) {<br />
&nbsp; &nbsp; get_template_part( '/taxonomy-person' );<br />
}<br />
<br />
// категория поиск<br />
elseif (is_search() ) {<br />
&nbsp; &nbsp; get_template_part( '/search' );<br />
}<br />
// категория теги и всё другое<br />
else {<br />
&nbsp; &nbsp; get_template_part( '/archives/tag' );<br />
}<br />
?&gt;</div></div>
<p>В файл <strong>taxonomy-person.php</strong> вносим содержимое файла <strong>archive.php</strong> с нужными изменениями, которые будут присущи новым категориям. Если ничего не меняется, то шаблон можно оставить таким же.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wordrpess_taxonomy_for_post/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Выводим подразделы в Sidebar для главных разделов</title>
		<link>https://ploshadka.net/vyvodim-podrazdely-v-sidebar-dlja-glavnykh-razdelov/</link>
					<comments>https://ploshadka.net/vyvodim-podrazdely-v-sidebar-dlja-glavnykh-razdelov/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Wed, 14 Jun 2017 08:00:10 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[sidebar.php]]></category>
		<category><![CDATA[single.php]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=697</guid>

					<description><![CDATA[Для WordPress существует много плагинов, расширяющих функционал стандартного меню. Однако когда нужно отступить от стандартного меню и сделать что-то лучше, не всегда подходят даже плагины. На этот случай можно сделать своё меню. Для одного из проектов я создал своё специфическое...]]></description>
										<content:encoded><![CDATA[<p>Для <strong>WordPress</strong> существует много плагинов, расширяющих функционал стандартного меню. Однако когда нужно отступить от стандартного меню и сделать что-то лучше, не всегда подходят даже плагины. На этот случай можно сделать своё меню. <span id="more-697"></span></p>
<p>Для одного из проектов я создал своё специфическое боковое меню (sidebar), удовлетворяющее присутствием нужных мне функций. </p>
<div class="highlight">
Это меню <strong>выводит подразделы главного раздела</strong> в статьях (записях) и в главных разделах WordPress.
</div>
<p>Собрал я это меню из различных хаков, разбросанных по просторам Интернета. Спасибо большое тем людям, которые их писали. Я доработал эти PHP коды и соединил вместе, чтобы получить специальное меню для WordPress: </p>
<div class="highlight">
<strong>В зависимости от страницы выводятся либо разделы либо подразделы.</strong>
</div>
<h2>Как вывести подразделы в меню на сайте</h2>
<p>Для того, чтобы не дублировать вывод меню через виджеты и через шаблон, надо будет подкорректировать свой шаблон и убрать лишнее. Этот полный PHP код нужно вставить в файл <strong>Sidebar.php</strong> шаблона своего сайта на WordPress. Там же в Sidebar можно убрать другой код, ответственный за вывод меню.</p>
<p>Перенимаем общий стиль шаблона для виджетов сайта. Делаем так, чтобы меню выводилось только в <a href="https://ploshadka.net/tag/single/">Записях</a> и <a href="https://ploshadka.net/tag/archive/">Разделах</a>, которые имеют <strong>Подразделы</strong>. Это нужно, чтобы не было лишнего вывода на <a href="https://ploshadka.net/tag/home-php/">Главной странице</a>, на страницах <a href="https://ploshadka.net/tag/search/">Поиска</a> и в тегах, где нет подразделов.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (is_single() || is_category()) : ?&gt;<br />
&lt;aside id=&quot;archives&quot; class=&quot;widget&quot;&gt;</div></div>
<p>Теперь <strong>выводим заголовок</strong>, в котором должно быть название <strong>родительского (главного)</strong> раздела.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;h3 class=&quot;widget-title&quot;&gt;&lt;?php<br />
// Вывод родительской категории &quot;0&quot;<br />
$separator = '';<br />
// Не показывать заголовок в разделах, где нет подразделов для статьи:<br />
$excludedcats = array(176,130,152,160);<br />
$count = 0;<br />
$categories = get_the_category();<br />
foreach($categories as $category) {<br />
$count++;<br />
if ($category-&gt;category_parent == 0) {<br />
if ( !in_array($category-&gt;cat_ID, $excludedcats) ) {<br />
echo $separator . '' &nbsp;. $category-&gt;name.''; }<br />
$separator = ' , ';<br />
}} ?&gt;<br />
&lt;/h3&gt;</div></div>
<p>Теперь, в зависимости от типа страницы выводим подразделы меню. Используем PHP для <strong>вывода подразделов</strong> в WordPress для <strong>типа страниц &#171;Запись&#187;</strong>.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (is_single()) : ?&gt;<br />
<br />
&lt;?php<br />
// Показывает подразделы главного раздела на страницах ЗАПИСЕЙ в WordPress<br />
echo '&lt;ul&gt;';<br />
$post_child_cat = array();<br />
foreach((get_the_category()) as $cat) {<br />
$args = array( 'child_of' =&gt; $cat-&gt;cat_ID );<br />
$categories = get_categories( $args );<br />
if( $categories ) foreach( $categories as $category ) {<br />
echo '&lt;li class=&quot;cat-item cat-item-'.$category-&gt;term_id.'&quot;&gt;'.<br />
'&lt;a title=&quot;'.$category-&gt;description.'&quot; href=&quot;';<br />
echo bloginfo('url');<br />
echo '/category/'.$cat-&gt;slug.'/'.$category-&gt;slug.'&quot;&gt;'.<br />
$category-&gt;name.'&lt;/a&gt;&lt;/li&gt;'; <br />
}<br />
}<br />
echo '&lt;/ul&gt;';<br />
?&gt; &nbsp;&nbsp; &nbsp; <br />
<br />
&lt;?php endif; ?&gt;</div></div>
<p>А если пользователь находится в <strong>подразделах главного раздела</strong> WordPress, то выводим те же самые разделы, что и в записях. Однако для этой задачи уже нужен иной PHP код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (is_category()) : ?&gt;<br />
&nbsp;<br />
&lt;?php<br />
// Показывает подразделы главного раздела на страницах РАЗДЕЛОВ в WordPress<br />
if (is_category()) {<br />
$this_category = get_category($cat);<br />
}<br />
&nbsp;<br />
if($this_category-&gt;category_parent)<br />
$this_category = wp_list_categories (<br />
$args = array(<br />
'orderby' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 'title', <br />
'show_count'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, <br />
'title_li' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; =&gt; 0, <br />
'use_desc_for_title' &nbsp; &nbsp;=&gt; 1, <br />
'child_of' &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp;$this_category-&gt;category_parent,<br />
'echo' &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, &nbsp; <br />
&nbsp;<br />
)); <br />
&nbsp; &nbsp; else<br />
$this_category = wp_list_categories (<br />
$args = array(<br />
'orderby' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 'title',<br />
'depth' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 1, <br />
'show_count'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, <br />
'title_li' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; =&gt; 0, <br />
'use_desc_for_title' &nbsp; &nbsp;=&gt; 1, <br />
'child_of' &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp;$this_category-&gt;cat_ID,<br />
'echo' &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, <br />
'show_option_none'&nbsp; &nbsp; &nbsp; =&gt; 0, // Если в категории нет разделов, не выводить надпись об этом<br />
)); <br />
&nbsp;<br />
if ($this_category) { ?&gt;<br />
&lt;ul&gt;&lt;?php echo $this_category; ?&gt;&lt;/ul&gt;<br />
&lt;?php } ?&gt;<br />
&nbsp;<br />
&lt;?php endif; ?&gt;</div></div>
<p>И в конце закрываем стиль:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;/aside&gt;<br />
&lt;?php endif; ?&gt;</div></div>
<p>После этого меню теперь выводим все остальные ссылки меню, которые будут и на <strong>Главной странице</strong> и на <strong>всех остальных</strong>. Это ссылки меню на <strong>главные разделы</strong> сайта.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;aside id=&quot;archives&quot; class=&quot;widget&quot;&gt;<br />
&nbsp; &nbsp; &lt;h3 class=&quot;widget-title&quot;&gt;Главные разделы&lt;/h3&gt;<br />
&nbsp; &nbsp; &lt;ul&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;?php &nbsp;<br />
$args = array(<br />
'title_li' &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;=&gt; 0, &nbsp;<br />
'orderby' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 'name', <br />
'show_count' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, <br />
'use_desc_for_title' =&gt; 0, <br />
'exclude' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; '130,193,177,227,228,205,204,206', // исключаем ненужные категории<br />
'hide_empty' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 1, &nbsp;<br />
// не обязательные<br />
'depth' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 1, &nbsp;// 0 - выводит все, 2 - не выводит третью вложенность<br />
<br />
); &nbsp;<br />
wp_list_categories($args); &nbsp; <br />
?&gt;<br />
&nbsp; &nbsp; &lt;/ul&gt;<br />
&lt;/aside&gt;</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/vyvodim-podrazdely-v-sidebar-dlja-glavnykh-razdelov/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Выделение ссылки раздела, в котором находится текущая статья</title>
		<link>https://ploshadka.net/vydelenie-ssylki-razdela-v-kotorom-nakhoditsja-tekushhaja-statja/</link>
					<comments>https://ploshadka.net/vydelenie-ssylki-razdela-v-kotorom-nakhoditsja-tekushhaja-statja/#comments</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 22 Apr 2017 08:00:13 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=717</guid>

					<description><![CDATA[WordPress применяет к текущей категории стиль current-cat. Это позволяет пользователю, с помощью css, выделить текущую категорию жирным цветом или любым другим способом. Однако current-cat по умолчанию не вставляется в метки. Это можно исправить с помощью выделения меток. А если необходимо...]]></description>
										<content:encoded><![CDATA[<p><strong>WordPress</strong> применяет к текущей категории стиль <strong>current-cat</strong>. Это позволяет пользователю, с помощью <strong>css</strong>, выделить текущую категорию жирным цветом или любым другим способом. <span id="more-717"></span></p>
<p>Однако current-cat по умолчанию не вставляется в метки. Это можно исправить с помощью <a href="https://ploshadka.net/podsvetka-oblaka-tekushhejj-metki-v-wordpress/">выделения меток</a>.</p>
<p>А если необходимо <strong>выделить стилем категорию</strong>, в которой <strong>находится текущая статья</strong>, то для этого следующий код надо положить в файл <strong>functions.php</strong> своей темы на WordPress:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// вставляет стиль .current-cat в категорию к которой присоединена читаемая статья<br />
add_filter('wp_list_categories','style_current_cat_single_post');<br />
function style_current_cat_single_post($output) {<br />
&nbsp; &nbsp; if( is_single() ) :<br />
&nbsp; &nbsp; &nbsp; &nbsp; global $post;<br />
&nbsp; &nbsp; &nbsp; &nbsp; foreach ( get_the_category($post-&gt;ID) as $cat ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $cats[] = $cat-&gt;term_id;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; foreach($cats as $value) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(preg_match('#item-' . $value . '&quot;&gt;#', $output)) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output = str_replace('item-' . $value . '&quot;&gt;', 'item-' . $value . ' current-cat&quot;&gt;', $output);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; endif;<br />
return $output;<br />
}</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/vydelenie-ssylki-razdela-v-kotorom-nakhoditsja-tekushhaja-statja/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Как исключить показ статей из подкатегорий в родительской рубрике</title>
		<link>https://ploshadka.net/kak-iskljuchit-pokaz-statejj-iz-podkategorijj-v-roditelskojj-rubrike/</link>
					<comments>https://ploshadka.net/kak-iskljuchit-pokaz-statejj-iz-podkategorijj-v-roditelskojj-rubrike/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Wed, 19 Apr 2017 08:00:06 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=628</guid>

					<description><![CDATA[PHP код для исключения отображения записей в родительской категории. Код нужно добавить в файл functions.php своей темы WordPress. Следующий код исключает показ постов из подкатегорий в родительской категории: function wpse_filter_child_cats( $query ) { &#160; &#160; if ( $query-&#62;is_category ) {...]]></description>
										<content:encoded><![CDATA[<p><strong>PHP код</strong> для исключения отображения записей в родительской категории. <span id="more-628"></span></p>
<p>Код нужно добавить в файл <strong>functions.php</strong> своей темы <strong>WordPress</strong>. </p>
<p>Следующий код исключает показ постов из подкатегорий в родительской категории:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function wpse_filter_child_cats( $query ) {<br />
&nbsp; &nbsp; if ( $query-&gt;is_category ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $queried_object = get_queried_object();<br />
&nbsp; &nbsp; &nbsp; &nbsp; $child_cats = ( array )get_term_children( $queried_object-&gt;term_id, 'category' );<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( !$query-&gt;is_admin )<br />
&nbsp; &nbsp; &nbsp; &nbsp; //exclude the posts in child categories<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $query-&gt;set( 'category__not_in', array_merge( $child_cats ) );<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return $query;<br />
}<br />
add_filter( 'pre_get_posts', 'wpse_filter_child_cats' );</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/kak-iskljuchit-pokaz-statejj-iz-podkategorijj-v-roditelskojj-rubrike/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как добавить в WordPress метку или раздел по умолчанию</title>
		<link>https://ploshadka.net/kak-dobavit-v-wordpress-metku-ili-razdel-po-umolchaniju/</link>
					<comments>https://ploshadka.net/kak-dobavit-v-wordpress-metku-ili-razdel-po-umolchaniju/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 17 Apr 2017 08:00:33 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[tag.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=184</guid>

					<description><![CDATA[PHP код присваивающий записям метку (тег) или рубрику (раздел) по умолчанию. Если всем статьям должна присваиваться одна определенная категория или тег, то это можно автоматизировать. В файл functions.php своей темы шаблона WordPress надо добавить следующий код: add_action( 'wp_insert_post', 'update_post_terms' );...]]></description>
										<content:encoded><![CDATA[<p><strong>PHP код</strong> присваивающий записям метку (тег) или рубрику (раздел) по умолчанию. <span id="more-184"></span></p>
<p>Если всем статьям должна присваиваться одна определенная категория или тег, то это можно автоматизировать. В файл <strong>functions.php</strong> своей темы шаблона <strong>WordPress</strong> надо добавить следующий код:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">add_action( 'wp_insert_post', 'update_post_terms' );<br />
function update_post_terms($post_id) {<br />
<br />
&nbsp; &nbsp; // если это ревизия, получаем родительский идентификатор:<br />
&nbsp; &nbsp; if ($parent = wp_is_post_revision($post_id)) :<br />
&nbsp; &nbsp; &nbsp; &nbsp; $post_id = $parent;<br />
&nbsp; &nbsp; endif;<br />
&nbsp; &nbsp; $post = get_post($post_id);<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; // проверка на запись, а иначе завершить работу:<br />
&nbsp; &nbsp; if ($post-&gt;post_type != 'post') :<br />
&nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; endif;<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; // метка по умолчанию:<br />
&nbsp; &nbsp; // wp_set_post_terms($post_id, 'метка', 'post_tag', true);<br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; // рубрика по умолчанию:<br />
&nbsp; &nbsp; $categories = wp_get_post_categories($post_id);<br />
&nbsp; &nbsp; $newcat = get_term_by('name', 'premiere', 'category');<br />
&nbsp; &nbsp; array_push($categories, $newcat-&gt;term_id);<br />
&nbsp; &nbsp; wp_set_post_categories($post_id, $categories);<br />
}</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/kak-dobavit-v-wordpress-metku-ili-razdel-po-umolchaniju/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Глобальное удаление категорий из других категорий и тегов</title>
		<link>https://ploshadka.net/globalnoe-udalenie-kategorijj-iz-drugikh-kategorijj-i-tegov/</link>
					<comments>https://ploshadka.net/globalnoe-udalenie-kategorijj-iz-drugikh-kategorijj-i-tegov/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Fri, 07 Apr 2017 13:38:15 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[tag.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=147</guid>

					<description><![CDATA[Одна и та же статья может находится в разных разделах сайта на WordPress. Иногда требуется, чтобы статьи определённого раздела не выводились в конкретных других разделах. При этом требуется, чтобы в сами эти разделы эта статья входила. Зачем может понадобится такая...]]></description>
										<content:encoded><![CDATA[<p>Одна и та же статья может находится в разных разделах сайта на <strong>WordPress</strong>. Иногда требуется, чтобы статьи определённого раздела <strong>не</strong> выводились в конкретных других разделах. При этом требуется, чтобы в сами эти разделы эта статья входила. <span id="more-147"></span></p>
<p>Зачем может понадобится такая &#171;каша&#187;? Ведь можно сразу не добавлять статью в раздел, в котором не хочется её выводить.</p>
<p>Как ни странно, это всё же может потребоваться. Иногда необходимо статью пометить названиями разделов, потому что она к ним соотносится. И эта статья будет видна, скажем на главной странице, но в других конкретных разделах её показывать не нужно.</p>
<p>Для такой задачи используем следующий код в файле <strong>functions.php</strong>:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Удаление категорий 71 из других категорий и тегов<br />
function exclude_category( $query ) {<br />
if ( $query-&gt;is_category(array(name_cat1,name_cat2)) || is_tag() ) <br />
{<br />
$query-&gt;set('cat', '-71'); &nbsp;<br />
}<br />
return $query;<br />
} <br />
add_filter('pre_get_posts', 'exclude_category');</div></div>
<p>где:<br />
<strong>name_cat1,name_cat2</strong> &#8212; перечисленные навания (slug) категорий в которых требуется статью не отображать.</p>
<p><strong>-71</strong> &#8212; ID раздела, который следует исключить из вышеприведенных категорий.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/globalnoe-udalenie-kategorijj-iz-drugikh-kategorijj-i-tegov/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Убрать ссылки с родительской категории</title>
		<link>https://ploshadka.net/ubrat-ssylki-s-roditelskojj-kategorii/</link>
					<comments>https://ploshadka.net/ubrat-ssylki-s-roditelskojj-kategorii/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Tue, 28 Mar 2017 08:00:06 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=333</guid>

					<description><![CDATA[PHP код убирающий ссылки с родительских разделов (также их можно назвать главными разделами). Иными словами ссылки в разделах остаются только на подразделы. В сами разделы сайта зайти по названию этого раздела не получится &#8212; ссылки убираются. Такая задача может возникнуть,...]]></description>
										<content:encoded><![CDATA[<p><strong>PHP код</strong> убирающий ссылки с родительских разделов (также их можно назвать главными разделами). Иными словами ссылки в разделах остаются только на подразделы. В сами разделы сайта зайти по названию этого раздела не получится &#8212; ссылки убираются. <span id="more-333"></span></p>
<p>Такая задача может возникнуть, когда требуется выводить заголовки разделов и ссылки в них на подразделы. А предоставлять пользователям доступ в главный раздел не хочется, потому что иначе там будет хаос из многочисленных статей, которые находятся в подразделах. </p>
<h2>Убрать ссылки с родительской категории</h2>
<p>С помощью этой функции можно убрать ссылки с родительских категорий. Можно использовать в <strong>sidebar.php</strong>.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// if ($category-&gt;category_parent &nbsp;!= 0) { }<br />
// Убирает ссылки с родительских категорий, используется в sidebar с помощью - 'walker' =&gt; $walker,<br />
class My_Walker_Category extends Walker_Category{<br />
&nbsp; &nbsp; function start_el(&amp;$output, $category, $depth, $args) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; extract($args);<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $cat_name = esc_attr( $category-&gt;name );<br />
&nbsp; &nbsp; &nbsp; &nbsp; $cat_name = apply_filters( 'list_cats', $cat_name, $category );<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( $category-&gt;parent &gt; 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link = '&lt;a href=&quot;' . esc_attr( get_term_link( $category ) ) . '&quot; ';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( $use_desc_for_title == 0 || empty($category-&gt;description) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= 'title=&quot;' . esc_attr( sprintf(__( '%s' ), $cat_name) ) . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= 'title=&quot;' . esc_attr( strip_tags( apply_filters( 'category_description', $category-&gt;description, $category ) ) ) . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '&gt;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= $cat_name;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( $category-&gt;parent &gt; 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '&lt;/a&gt;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( !empty($feed_image) || !empty($feed) ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= ' ';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( empty($feed_image) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '(';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '&lt;a href=&quot;' . get_term_feed_link( $category-&gt;term_id, $category-&gt;taxonomy, $feed_type ) . '&quot;';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( empty($feed) ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $alt = ' alt=&quot;' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $title = ' title=&quot;' . $feed . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $alt = ' alt=&quot;' . $feed . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $name = $feed;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= $title;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '&gt;';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( empty($feed_image) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= $name;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= &quot;&lt;img src='$feed_image'$alt$title&quot; . ' /&gt;';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= '&lt;/a&gt;';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( empty($feed_image) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= ')';<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( !empty($show_count) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= ' (' . intval($category-&gt;count) . ')';<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( !empty($show_date) )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $link .= ' ' . gmdate('Y-m-d', $category-&gt;last_update_timestamp);<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if ( 'list' == $args['style'] ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output .= &quot;\t&lt;li&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $class = 'cat-item cat-item-' . $category-&gt;term_id;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( !empty($current_category) ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_current_category = get_term( $current_category, $category-&gt;taxonomy );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( $category-&gt;term_id == $current_category )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $class .= &nbsp;' current-cat';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; elseif ( $category-&gt;term_id == $_current_category-&gt;parent )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $class .= &nbsp;' current-cat-parent';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output .= &nbsp;' class=&quot;' . $class . '&quot;';<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output .= &quot;&gt;$link\n&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output .= &quot;\t$link&lt;br /&gt;\n&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Пример вывода этой функции в sidebar.php:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php &nbsp;<br />
//$walker = new My_Walker_Category();<br />
//$children = wp_list_categories;<br />
$args = array(<br />
'title_li' &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;=&gt; 0, &nbsp;<br />
'orderby' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 'name', <br />
'show_count' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 0, <br />
'use_desc_for_title' =&gt; 0, <br />
'exclude' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; '11', <br />
'hide_empty' &nbsp; &nbsp; &nbsp; &nbsp; =&gt; 1, &nbsp;<br />
'walker' =&gt; $walker, // введённый параметр в functions - убирает ссылки с родительских категорий<br />
// не обязательные<br />
'depth' &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; 2, &nbsp;// 0 - выводит все, 2 - не выводит третью вложенность<br />
<br />
); &nbsp;<br />
wp_list_categories($args); &nbsp; <br />
?&gt;</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/ubrat-ssylki-s-roditelskojj-kategorii/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTML теги в описании категорий и меток WordPress</title>
		<link>https://ploshadka.net/html-tegi-v-opisanii-kategorijj-i-metok-wordpress/</link>
					<comments>https://ploshadka.net/html-tegi-v-opisanii-kategorijj-i-metok-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Wed, 22 Mar 2017 08:00:13 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[tag.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=168</guid>

					<description><![CDATA[Дополнительные возможности при работе с описанием в категориях и тегах WordPress. Добавляем HTML теги в описание рубрик и меток По умолчанию WordPress вырезает HTML теги из описаний разделов и меток. HTML вырезается с помощью двух функций &#8212; wp_filter_kses() и wp_kses_data()....]]></description>
										<content:encoded><![CDATA[<p>Дополнительные возможности при работе с описанием в категориях и тегах WordPress.<span id="more-168"></span></p>
<h2>Добавляем HTML теги в описание рубрик и меток</h2>
<p>По умолчанию <strong>WordPress</strong> вырезает <strong>HTML теги</strong> из описаний разделов и меток. HTML вырезается с помощью двух функций &#8212; <strong>wp_filter_kses()</strong> и <strong>wp_kses_data()</strong>. Следовательно нужно выключить эти функции в WordPress.</p>
<p>В файл functions.php добавляем:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Разрешаем употребление HTML тегов в описании рубрик и меток<br />
remove_filter('pre_term_description', 'wp_filter_kses');<br />
remove_filter('pre_term_description', 'wp_kses_data');</div></div>
<h2>Убираем HTML тег p из описания рубрик и меток</h2>
<p>Вывод описания категорий:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;php? echo category_description(); ?&gt;</div></div>
<p>Для вырезки HTML тега p из описания этой функции нужно добавить:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Убираем тег &lt;p&gt;&lt;/p&gt; из description в мета тегах<br />
remove_filter('term_description', 'wpautop');</div></div>
<h2>Как убрать HTML из мета описания WordPress</h2>
<p>Если HTML разрешены, но эта же функция генерирует описание в мета тег description WordPress, то следующая команда убирает HTML из неё:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">// Убирает HTML из описания category_description<br />
function my_strip_tags($category_description='') {<br />
&nbsp; &nbsp;return strip_tags($category_description, '');<br />
}<br />
add_filter('category_description','my_strip_tags');</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/html-tegi-v-opisanii-kategorijj-i-metok-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Вставка изображения по названиям категорий WordPress</title>
		<link>https://ploshadka.net/vstavka-izobrazhenija-po-nazvanijam-kategorijj-wordpress/</link>
					<comments>https://ploshadka.net/vstavka-izobrazhenija-po-nazvanijam-kategorijj-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 12 Mar 2017 10:00:48 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[Изображение]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=23</guid>

					<description><![CDATA[PHP код для вывода изображений (миниатюр) в категориях WordPress, не используя плагин. Например, есть категория &#171;Страны&#187; и нужно вывести изображение для каждой из них. Для этого используется следующая конструкция: &#60;img src=&#34;/img/country/&#60;?php if (is_category( )) { $cat = get_query_var('cat'); $yourcat =...]]></description>
										<content:encoded><![CDATA[<p><strong>PHP</strong> код для вывода изображений (миниатюр) в категориях <strong>WordPress</strong>, не используя плагин. <span id="more-23"></span></p>
<p>Например, есть категория &#171;Страны&#187; и нужно вывести изображение для каждой из них. Для этого используется следующая конструкция:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;img src=&quot;/img/country/&lt;?php<br />
if (is_category( )) {<br />
$cat = get_query_var('cat');<br />
$yourcat = get_category ($cat);<br />
echo ''. $yourcat-&gt;slug;<br />
} ?&gt;.jpg&quot; class=&quot;img_category&quot; title=&quot;&lt;?php single_cat_title(); ?&gt;&quot; alt=&quot;&lt;?php single_cat_title(); ?&gt;&quot;&gt;</div></div>
<p>Изображения должны находиться в папке <strong>country</strong> и названы латиницей в соответствии с названием категории. Т.е. если категория имеет &#171;название url страницы&#187;* <strong>france</strong>, то название файла должно быть <strong>france.jpg</strong>.</p>
<p>По-другому это называется: <strong>slug</strong>.</p>
<p>В <strong>title</strong> и <strong>alt</strong> будет выводиться название категории WordPress с помощью этой php вставки:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php single_cat_title(); ?&gt;</div></div>
<p>Стиль для изображений может быть любым, например:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">.img_category {<br />
/*border: 1px solid #B0BEC7;*/<br />
float: right;<br />
margin: 0px 0px 15px 5px;<br />
border-radius: 2px;<br />
max-width: 300px;<br />
max-height: 200px;<br />
}</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/vstavka-izobrazhenija-po-nazvanijam-kategorijj-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Вывод названия текущей категории в WordPress</title>
		<link>https://ploshadka.net/wordpress-level-category-for-post/</link>
					<comments>https://ploshadka.net/wordpress-level-category-for-post/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 11 Mar 2017 08:00:25 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[single.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=24</guid>

					<description><![CDATA[Готовые PHP для вывода названий текущей категории в записях WordPress. Вывод разделов в зависимости от глубины подраздела, в которой находится запись. Также может оказаться полезной статья о том, как проверить разделы на наличие в них подразделов. Есть стандартная функция для...]]></description>
										<content:encoded><![CDATA[<p>Готовые <strong>PHP</strong> для вывода названий текущей категории в записях <strong>WordPress</strong>. Вывод разделов в зависимости от глубины подраздела, в которой находится запись. <span id="more-24"></span></p>
<div class="highlight">Также может оказаться полезной статья о том, <a href="https://ploshadka.net/check-if-category-has-child/">как проверить разделы на наличие в них подразделов</a>.</div>
<p>Есть стандартная функция для вывода категорий на WordPress:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php the_category(', '); ?&gt;</div></div>
<p>Она выводит список всех категорий через запятую.</p>
<p>А что если нужно вывести только определенный вложенный (дочерний) или только главный раздел? И совсем не нужно выводить все предыдущие разделы. В этом случае <strong>the_category</strong> уже не подойдет.</p>
<p>Сделать это можно другими способами.</p>
<h2>Вывести название только самого главного раздела</h2>
<p>Этот код следует вставить в файл functions.php своей темы на WordPress.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function get_level($category, $level = 1)<br />
{<br />
&nbsp; &nbsp; if ($category-&gt;category_parent == 0) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return $level;<br />
&nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $level++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $category = get_category($category-&gt;category_parent);<br />
&nbsp; &nbsp; return get_level($category, $level);<br />
&nbsp; &nbsp; }<br />
}<br />
<br />
function display_cat_level_1($link=false){<br />
&nbsp; &nbsp; $cats = get_the_category( );<br />
&nbsp; &nbsp; if( $cats ){<br />
&nbsp; &nbsp; &nbsp; &nbsp; foreach($cats as $cat){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $current_cat_level = get_level($cat);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $current_cat_level &nbsp;== $level = 1 ){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($link==true) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo '&lt;a href=&quot;'.get_category_link($cat-&gt;cat_ID).'&quot;&gt;'.$cat-&gt;name.&quot;&lt;/a&gt; &amp;nbsp;&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $cat-&gt;name.&quot;&lt;br /&gt;&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Вывод этой функции:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (function_exists('display_cat_level')) {<br />
echo 'Другие &nbsp;статьи смотрите в главном разделе:';<br />
echo display_cat_level (true);<br />
}?&gt;</div></div>
<p>Следующий код необходимо использовать в файле single.php или любом другом отвечающим за вывод информации в статье на сайте.</p>
<h2>Вывести название только дочернего раздела</h2>
<p>Функция не будет работать для записей второй категории вложенности. Только для записей третей категории вложенности. Иными словами будет выводиться только для записей такого рода:</p>
<p>Категории Марки -> Audi -> Статья об Ауди</p>
<p>В данном случае код выведет для записи &#171;Статья об Ауди&#187; раздел с названием Audi. А если какая-то статья будет находится только в разделе Марки, то для неё выводится ничего не будет.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">function get_level($category, $level = 1)<br />
{<br />
&nbsp; &nbsp; if ($category-&gt;category_parent == 0) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return $level;<br />
&nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $level++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; $category = get_category($category-&gt;category_parent);<br />
&nbsp; &nbsp; return get_level($category, $level);<br />
&nbsp; &nbsp; }<br />
}<br />
<br />
function display_cat_level_2($link=false){<br />
&nbsp; &nbsp; $cats = get_the_category( );<br />
&nbsp; &nbsp; if( $cats ){<br />
&nbsp; &nbsp; &nbsp; &nbsp; foreach($cats as $cat){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $current_cat_level = get_level($cat);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $current_cat_level &nbsp;== $level = 2 ){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($link==true) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo '&lt;a href=&quot;'.get_category_link($cat-&gt;cat_ID).'&quot;&gt;'.$cat-&gt;name.&quot;&lt;/a&gt; &amp;nbsp;&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $cat-&gt;name.&quot;&lt;br /&gt;&quot;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Вывод этой функции:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (function_exists('display_cat_level_2')) {<br />
echo 'Другие &nbsp;статьи смотрите в главном разделе:';<br />
echo display_cat_level_2 (true);<br />
}?&gt;</div></div>
<h2>Вывод родительской категории в статьях</h2>
<p>Можно выводить разделы другим способом. В этом случае не нужно ничего вставлять в файл functions.php. Достаточно вставить код в файл вывода записей.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php<br />
// Вывод родительской категории &quot;0&quot;, с исключением нескольких рубрик<br />
$separator = '';<br />
//$excludedcats = array(12,13,14,15);<br />
$count = 0;<br />
$printArray = explode(&quot;,&quot;, $print);<br />
$categories = get_the_category();<br />
foreach($categories as $category) {<br />
$count++;<br />
if ($category-&gt;category_parent == 0) {<br />
if ( !in_array($category-&gt;cat_ID, $excludedcats) ) {<br />
&nbsp; echo $separator . '' &nbsp;. $category-&gt;name.'';<br />
//&nbsp; &nbsp; &nbsp;echo $separator . &nbsp;' &nbsp;– &lt;a href=&quot;' . get_category_link( $category-&gt;term_id ) . '&quot; title=&quot;' . esc_attr(strip_tags($category-&gt;name)) . '&quot; ' . '&gt;' &nbsp;. $category-&gt;name.'&lt;/a&gt;';<br />
&nbsp; <br />
}<br />
$separator = ' , ';<br />
}<br />
}<br />
?&gt;</div></div>
<h2>Вывод названия последнего раздела для статьи</h2>
<p>Этот php код выводит название самой &#171;глубокой&#187; категории для статьи:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
$categories = get_the_category($post-&gt;ID);<br />
foreach($categories as $category) :<br />
&nbsp; &nbsp; $children = get_categories( array ('parent' =&gt; $category-&gt;term_id ));<br />
&nbsp; &nbsp; $has_children = count($children);<br />
&nbsp; &nbsp; if ( $has_children == 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
echo '&lt;a href=&quot;'.get_category_link($category-&gt;term_id ).'&quot;&gt;'.$category-&gt;cat_name.'&lt;/a&gt;';<br />
&nbsp; &nbsp; }<br />
endforeach;<br />
?&gt;</div></div>
<h2>Выводим в статье только подразделы</h2>
<p>А вот ещё один способ как вывести в статье только подразделы.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">foreach($categories as $category) :<br />
&nbsp; &nbsp; $children = get_categories( array ('parent' =&gt; $category-&gt;term_id ));<br />
&nbsp; &nbsp; $has_children = count($children);<br />
<br />
&nbsp; &nbsp; if ( $has_children == 0 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; echo $category-&gt;cat_name .' ';<br />
&nbsp; &nbsp; &nbsp; &nbsp; break; // Останавливаем после первого найденного объекта. Если нужны все, то строчку нужно закомментировать.<br />
&nbsp; &nbsp; }<br />
endforeach;</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wordpress-level-category-for-post/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как вывести данные в WordPress в зависимости от раздела</title>
		<link>https://ploshadka.net/kak-vyvesti-dannye-v-wordpress-v-zavisimosti-ot-razdela/</link>
					<comments>https://ploshadka.net/kak-vyvesti-dannye-v-wordpress-v-zavisimosti-ot-razdela/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Fri, 10 Mar 2017 17:00:16 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[archive.php]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=1</guid>

					<description><![CDATA[PHP коды в WordPress для вывода информации в категориях. Показ записей в конкретных разделах Вывод статей или любой другой информации в зависимости от ID категорий: Выводим информацию из конкретной категории: &#60;?php if (in_category(array(1,20))) { ?&#62; Или из другой категории: &#60;?php...]]></description>
										<content:encoded><![CDATA[<p><strong>PHP коды в WordPress</strong> для вывода информации в категориях. <span id="more-1"></span></p>
<h2>Показ записей в конкретных разделах</h2>
<p>Вывод статей или любой другой информации в зависимости от ID категорий:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">Выводим информацию из конкретной категории:<br />
&lt;?php if (in_category(array(1,20))) { ?&gt;<br />
<br />
Или из другой категории:<br />
&lt;?php } elseif (in_category('130')) { ?&gt;<br />
<br />
Во всех других разделах выводим:<br />
&lt;?php } else { ?&gt;<br />
<br />
&lt;?php } ?&gt;</div></div>
<p>Разновидность PHP конструкции, всё то же самое:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (in_category(array(1,20))) : ?&gt;<br />
<br />
&lt;?php elseif (in_category('130')) : ?&gt;<br />
<br />
&lt;?php else : ?&gt;<br />
<br />
&lt;?php endif; ?&gt;</div></div>
<p>Если это категория или тег WordPress, то вывести одно. Или если это категория поиск, то вывести другое:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php if (is_category() || is_tag()):?&gt;<br />
<br />
&lt;?php elseif (is_search()):?&gt;<br />
<br />
&lt;?php endif;?&gt;</div></div>
<h2>Проверка на главную (родительскую) категорию</h2>
<p>Проверяем категорию на соответствие родителя &#8212; это главный раздел или подраздел.</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
// Проверка на родительскую категорию. <br />
// Если категория родительская, то один вывод, если нет, то другой.<br />
$this_category = get_category($cat); <br />
if ($this_category-&gt;category_parent == 0) { ?&gt;<br />
<br />
Информация для главной категории<br />
<br />
&lt;? } else { ?&gt;<br />
<br />
Информация для подразделов<br />
<br />
&lt;?php } ?&gt;</div></div>
<h2>Вывод информации на первой странице категории</h2>
<p>Выводим информацию только на первой странице раздела:</p>
<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&lt;?php <br />
// Вывод только на первой странице категории <br />
$paged = $wp_query-&gt;get( 'paged' ); if ( ! $paged || $paged &lt; 2 ) : ?&gt;<br />
<br />
Любой текст или код php.<br />
<br />
&lt;?php endif; ?&gt;</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/kak-vyvesti-dannye-v-wordpress-v-zavisimosti-ot-razdela/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
