<?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>update_post_meta &#8212; ploshadka.net</title>
	<atom:link href="https://ploshadka.net/tag/update_post_meta/feed/" rel="self" type="application/rss+xml" />
	<link>https://ploshadka.net</link>
	<description>Мир интернет технологий</description>
	<lastBuildDate>Wed, 09 May 2018 17:40:31 +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 – add_action и save_post</title>
		<link>https://ploshadka.net/wordpress-add_action-save_post/</link>
					<comments>https://ploshadka.net/wordpress-add_action-save_post/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 15 Oct 2018 08:00:39 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[add_action()]]></category>
		<category><![CDATA[add_filter()]]></category>
		<category><![CDATA[post_content]]></category>
		<category><![CDATA[sanitize_text_field()]]></category>
		<category><![CDATA[save_post]]></category>
		<category><![CDATA[str_replace]]></category>
		<category><![CDATA[update_post_meta]]></category>
		<category><![CDATA[wp_get_post_terms()]]></category>
		<category><![CDATA[wp_insert_post_data()]]></category>
		<category><![CDATA[wp_update_post()]]></category>
		<category><![CDATA[Основательные труды]]></category>
		<category><![CDATA[Произвольные поля]]></category>
		<category><![CDATA[Произвольный тип записи]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=4184</guid>

					<description><![CDATA[Примеры автоматического внесения изменений в базу данных WordPress при сохранении записи черновика или публикации. Для изменения содержимого без внесения в базу данных читайте другую инструкцию. Для того, чтобы запустить какую-нибудь функцию при сохранении поста, нужно воспользоваться хуком: add_action('save_post', '', );...]]></description>
										<content:encoded><![CDATA[<p>Примеры автоматического внесения изменений в базу данных WordPress при сохранении записи черновика или публикации. <span id="more-4184"></span></p>
<p>Для изменения содержимого без внесения в базу данных <a href="https://ploshadka.net/wordpress-change-content/">читайте другую инструкцию</a>.</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;">add_action('save_post', '', );</div></div>
<p>Более подробно об этом ниже.</p>
<h2>1. save_post для основного контента поста</h2>
<p>Меняем данные в основной записи поста <strong>(post_content)</strong>. К примеру, перед отправлением данных, скрипт поменяет в контенте одну букву на другую, а затем сохранит содержимое в базе данных.</p>
<h3>Функция меняющая контент в WordPress</h3>
<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 replaceLetters()<br />
{<br />
&nbsp; &nbsp; global $post;<br />
<br />
&nbsp; &nbsp; $search = ['Ё', 'ё'];<br />
&nbsp; &nbsp; $replace = ['Е', 'е'];<br />
<br />
&nbsp; &nbsp; $getContent = get_post($post-&gt;ID);<br />
&nbsp; &nbsp; $postContent = $getContent-&gt;post_content;<br />
&nbsp; &nbsp; $modifyContent['post_content'] = str_replace($search, $replace, $postContent);<br />
<br />
&nbsp; &nbsp; $newPost = array();<br />
&nbsp; &nbsp; $newPost['ID'] = $post-&gt;ID;<br />
&nbsp; &nbsp; $newPost['post_content'] = $modifyContent['post_content'];<br />
&nbsp; &nbsp; wp_update_post( $newPost );<br />
}</div></div>
<h3>Запуск функции</h3>
<p>При сочетании <strong>wp_update_post</strong> и <strong>save_post</strong>, нужна конструкция, которая сначала удаляет action <strong>(remove_action)</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 runReplaceLetters()<br />
{<br />
&nbsp; &nbsp; global $post;<br />
&nbsp; &nbsp; if ( ! wp_is_post_revision($post-&gt;ID) )<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; remove_action('save_post', 'runReplaceLetters', 99);<br />
&nbsp; &nbsp; &nbsp; &nbsp; replaceLetters();<br />
&nbsp; &nbsp; &nbsp; &nbsp; add_action('save_post', 'runReplaceLetters', 99);<br />
&nbsp; &nbsp; }<br />
}<br />
add_action('save_post', 'runReplaceLetters', 99);</div></div>
<h2>2. save_post для произвольных полей</h2>
<p>Та же самая функция, но которую будем использовать для произвольных полей. </p>
<h3>Функция меняющая контент</h3>
<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 replaceLettersCustomPostMeta($key = &quot;&quot;)<br />
{<br />
&nbsp; &nbsp; global $post;<br />
<br />
&nbsp; &nbsp; $search = ['Ё', 'ё'];<br />
&nbsp; &nbsp; $replace = ['Е', 'е'];<br />
<br />
&nbsp; &nbsp; $getKeyData = get_post_meta($post-&gt;ID, $key, true);<br />
&nbsp; &nbsp; $change = str_replace($search, $replace, $getKeyData);<br />
&nbsp; &nbsp; update_post_meta($post-&gt;ID, $key, $change);<br />
}</div></div>
<h3>Запуск функции</h3>
<p>В отличии от предыдущего примера, здесь не нужно удалять <strong>action</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 runReplaceLettersCustomPostMeta()<br />
{<br />
&nbsp; &nbsp; replaceLettersCustomPostMeta('ploshadka.net');<br />
&nbsp; &nbsp; replaceLettersCustomPostMeta('ploshadka-net');<br />
}<br />
add_action('save_post', 'runReplaceLettersCustomPostMeta', 99);</div></div>
<h2>3. Сохраняем данные через wp_insert_post_data</h2>
<p>Сохраним изменения в контенте записи через функцию <strong>wp_insert_post_data</strong>.</p>
<div class="highlight">Надо быть внимательным при сочетании функций <strong>add_filter -> wp_insert_post_data</strong> и <strong>add_action -> save_post</strong>. При неправильных приоритетах что-то может не работать.</div>
<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 replaceLetters( $data )<br />
{<br />
&nbsp; &nbsp; if ( defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE ) return $data; // Exclude Autosave<br />
&nbsp; &nbsp; if ( ! current_user_can('edit_post') ) return $data;<br />
<br />
&nbsp; &nbsp; if (!empty($data['post_content'])) {<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; $search = ['Ё', 'ё'];<br />
&nbsp; &nbsp; &nbsp; &nbsp; $replace = ['Е', 'е'];<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; $modifyContent['post_content'] = str_replace($search, $replace, $data['post_content']);<br />
<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return $modifyContent;<br />
}<br />
add_filter( 'wp_insert_post_data' , 'replaceLetters', 99 );</div></div>
<h2>4. Создадим title записи для WordPress по шаблону</h2>
<p>Заголовок будет автоматически формироваться при каждом сохранении записи из атрибутов, которые мы для него подготовим.</p>
<h3>Функция создающая title</h3>
<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 generateTitle() {<br />
&nbsp; &nbsp; global $post;<br />
<br />
&nbsp; &nbsp; $string = get_post_meta($post-&gt;ID, 'ploshadka.net', true);<br />
<br />
&nbsp; &nbsp; $newsTag = wp_get_post_terms($post-&gt;ID, 'news');<br />
&nbsp; &nbsp; foreach ($newsTag as $tag) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $tag = ' - ' .$tag-&gt;name;<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; $date = get_post_time();<br />
<br />
&nbsp; &nbsp; $newTitle = sanitize_text_field(sprintf('%s %s %s', $string, $tag, $date));<br />
<br />
// &nbsp; &nbsp; &nbsp;Иногда возможен такой вариант:<br />
// &nbsp; &nbsp; &nbsp;wp_update_post(array($post-&gt;ID, 'post_title' =&gt; $newTitle ));<br />
// &nbsp; &nbsp; &nbsp;Но с ним может перестать сохраняться post_content.<br />
<br />
&nbsp; &nbsp; $newPost = array();<br />
&nbsp; &nbsp; $newPost['ID'] = $post-&gt;ID;<br />
&nbsp; &nbsp; $newPost['post_title'] = $newTitle;<br />
&nbsp; &nbsp; wp_update_post( $newPost );<br />
}</div></div>
<h3>Запуск функции для Custom Post Types</h3>
<p>Функцию выше запустим для произвольных типов записей. Для этого к save_post прибавим название такой записи. В данном случае <strong>news</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 runGenerateTitle()<br />
{<br />
&nbsp; &nbsp; global $post;<br />
&nbsp; &nbsp; if ( ! wp_is_post_revision($post-&gt;ID) )<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; remove_action('save_post_news', 'runGenerateTitle', 10);<br />
&nbsp; &nbsp; &nbsp; &nbsp; generateTitle();<br />
&nbsp; &nbsp; &nbsp; &nbsp; add_action('save_post_news', 'runGenerateTitle', 10);<br />
&nbsp; &nbsp; }<br />
}<br />
add_action('save_post_news', 'runGenerateTitle', 10);</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wordpress-add_action-save_post/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Буфер обмена в PHP или как сохранить не отображающуюся переменную</title>
		<link>https://ploshadka.net/ob_start-value-disappear/</link>
					<comments>https://ploshadka.net/ob_start-value-disappear/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 10 May 2018 08:00:53 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ob_start]]></category>
		<category><![CDATA[update_post_meta]]></category>
		<category><![CDATA[XML]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=3303</guid>

					<description><![CDATA[Коротенькая заметка о буфере обмена в PHP. В большой мере для цели, когда нужно сохранить из переменной какое-то значение для последующего вывода. Однако содержимое не сохраняется. Для исправления такой ситуации мы используем небольшой трюк с буфером обмена. Предположим мы получили...]]></description>
										<content:encoded><![CDATA[<p>Коротенькая заметка о буфере обмена в PHP. В большой мере для цели, когда нужно сохранить из переменной какое-то значение для последующего вывода. Однако содержимое не сохраняется. Для исправления такой ситуации мы используем небольшой трюк с буфером обмена. <span id="more-3303"></span></p>
<p>Предположим мы получили эту переменную из <strong>XML файла</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;">foreach ($xml-&gt;xpath(&quot;/ploshadka/net/&quot;) as $value) { }</div></div>
<p>Однако она не сохраняется. Данные в переменной <strong>$value</strong> хоть и существуют, но сохранятся отказываются. Возможно они представлены в виде какие-то данных, которые не понятны функциям сохранения.</p>
<p>Тогда мы можем попробовать сначала вызвать эту переменную, а затем сохранить.</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;">ob_start();</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;">echo $value;</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;">update_post_meta( $post_id, 'xml_value', value );</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;">ob_end_clean();</div></div>
<p>Вот и всё.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/ob_start-value-disappear/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как поменять значение произвольного поля для всех записей WordPress</title>
		<link>https://ploshadka.net/wordpress-change-all-custom-fields/</link>
					<comments>https://ploshadka.net/wordpress-change-all-custom-fields/#comments</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Wed, 09 May 2018 17:38:43 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[update_post_meta]]></category>
		<category><![CDATA[Произвольные поля]]></category>
		<guid isPermaLink="false">https://ploshadka.net/?p=4256</guid>

					<description><![CDATA[Функция для изменения значения произвольного поля для всех записей разом. Функцию надо поместить в код страницы шаблона сайта на WordPress, а затем загрузить эту страницу. Например, положить этот код в файл single.php, а затем обновить любую страницу сайта со статьёй....]]></description>
										<content:encoded><![CDATA[<p>Функция для изменения значения произвольного поля для всех записей разом. <span id="more-4256"></span></p>
<p>Функцию надо поместить в код страницы шаблона сайта на WordPress, а затем загрузить эту страницу. Например, положить этот код в файл single.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;">$args = array(<br />
&nbsp; &nbsp; 'posts_per_page' =&gt; 1000,<br />
&nbsp; &nbsp; 'post_type' =&gt; 'post'<br />
&nbsp; &nbsp; );<br />
$the_query = new WP_Query( $args );<br />
<br />
if ( $the_query-&gt;have_posts() ) {<br />
&nbsp; &nbsp; while ( $the_query-&gt;have_posts() ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; $the_query-&gt;the_post();<br />
&nbsp; &nbsp; &nbsp; &nbsp; $new_meta = 1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; update_post_meta($post-&gt;ID, 'single_meta', $new_meta);<br />
&nbsp; &nbsp; }<br />
}</div></div>
<p>Переменная <strong>$new_meta</strong> &#8212; отвечает за значение, на которое будет изменены произвольные поля всех записей. </p>
<p><strong>single_meta</strong> &#8212; это то произвольное поле, значения в котором требуется поменять.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ploshadka.net/wordpress-change-all-custom-fields/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
