<?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>Webgleb</title>
	<atom:link href="http://webgleb.ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://webgleb.ru</link>
	<description>Учебные заметки</description>
	<lastBuildDate>Sun, 13 Dec 2020 16:27:14 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.6.12</generator>
	<item>
		<title>Убрать проверку полей с условиями выбора страны WooCommerce</title>
		<link>https://webgleb.ru/wordpress/woocommerce-condition-checkout-fields/</link>
					<comments>https://webgleb.ru/wordpress/woocommerce-condition-checkout-fields/#respond</comments>
		
		<dc:creator><![CDATA[webgleb]]></dc:creator>
		<pubDate>Sat, 31 Oct 2020 20:59:37 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[woocommerce]]></category>
		<guid isPermaLink="false">https://webgleb.ru/?p=30</guid>

					<description><![CDATA[Как в WooCommerce убрать проверку определенных полей с условием выбора конкретной страны.]]></description>
										<content:encoded><![CDATA[
<p>Столкнулся с ситуацией, когда при установленном плагине Saphali Woocommerce Russian, который играл роль удобной настройке полей в заказе происходил маленький баг. Суть была в том, что для магазина поле почтовый индекс было обязательным.</p>



<p>Но проблема в том, что в ОАЭ нет таковых индексов, в каком понимании они есть у нас. Они используют Post Office Box. А у WooCommerce по дефолту скрывает поле shipping_postcode при выборе этой страны.</p>



<p>Таким образом, когда этими полями управляет Saphali Woocommerce Russian и в настройках стоит, что поле почтового индекса является обязательным &#8212; происходит конфликт. При проверке полей WooCommerce сообщает, что поле необходимо заполнить, но пользователь его не видит и не может это сделать.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="127" src="https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-1024x127.png" alt="" class="wp-image-31" srcset="https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-1024x127.png 1024w, https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-300x37.png 300w, https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-768x95.png 768w, https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-400x50.png 400w, https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10-1025x127.png 1025w, https://webgleb.ru/wp-content/uploads/2020/10/snimok-ekrana-2020-11-01-v-01.54.10.png 1154w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Что можно сделать в этом случае? Самое простое решение, использовать хук woocommerce_checkout_fields, который получает все данные о полях и поменять их.</p>


<pre class="brush: php; title: ; notranslate">
// Убираем валидацию почтового индекса для ОАЭ
add_filter( 'woocommerce_checkout_fields' , 'webgleb_postcode_required_false_for_uae' );
function webgleb_postcode_required_false_for_uae( $fields ) {
    $custome_shipping_country = WC()-&gt;customer-&gt;get_shipping_country();
    if( $custome_shipping_country == 'AE' ) {
        $fields['billing']['billing_postcode']['required'] = false;
        $fields['shipping']['shipping_postcode']['required'] = false;
    }
    return $fields;
}
</pre>


<p>Получается, что мы просто получаем страну пользователя, если это ОАЕ, то ставим эти поля не обязательными. Таким образом вы можете делать любые условия, которые будут касаться выбора страны. Надеюсь Вам пригодится.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webgleb.ru/wordpress/woocommerce-condition-checkout-fields/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce &#8212; дополнительный столбец в таблице с продуктами</title>
		<link>https://webgleb.ru/wordpress/woocommerce-extra-product-column/</link>
					<comments>https://webgleb.ru/wordpress/woocommerce-extra-product-column/#respond</comments>
		
		<dc:creator><![CDATA[webgleb]]></dc:creator>
		<pubDate>Tue, 20 Oct 2020 11:59:43 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[woocommerce]]></category>
		<guid isPermaLink="false">https://webgleb.ru/?p=26</guid>

					<description><![CDATA[Как в WooCommerce добавить дополнительный столбец в админку заказов с произвольной информацией.]]></description>
										<content:encoded><![CDATA[
<p>Довольно часто мы сталкиваемся с ситуацией, когда необходимо вывести какую-то дополнительную информацию в административной панели и стандартных столбцов в таблице с товарами нам не хватает.</p>



<p>Решается это задача максимально просто: первой функцией мы добавим столбец. А второй выведем необходимую информацию на экран.</p>


<pre class="brush: php; title: ; notranslate">
add_filter( 'manage_edit-product_columns', 'webgleb_add_description_status_column', 9999 );
function webgleb_add_description_status_column( $columns ){
	$columns['product-description'] = 'Описание';
	return $columns;
}
</pre>


<p>Мы добавили в массив $columns новую пару ключ-значение, где product-description это уникальный ключ в массиве, а его значение &#8212; название столбца.</p>



<p>Теперь второй функцией мы будет в этом столбце выводить информацию. Для этого воспользуется хуком manage_product_posts_custom_column. Код будет примерно такой:</p>


<pre class="brush: php; title: ; notranslate">
add_action( 'manage_product_posts_custom_column', 'webgleb_add_description_status_column_content', 10, 2 );
function webgleb_add_description_status_column_content( $column, $product_id ){
    if ( $column == 'product-description' ) {
        $product = wc_get_product( $product_id );
        $description = $product-&gt;get_description();
        $out = (empty($description)) ? 'Нет' : 'Есть';
        echo $out;
    }
}
</pre>


<p>Тут мы получаем данные о продукте по его ID. Далее получаем описание продукта в переменную $description. После, с помощью тернарного оператора, записываем в переменную $out есть или нет контент у данного поста.</p>



<p>Таким нехитрым способом мы сделали удобный столбец в админке, который подскажет, заполнено ли описание продукта или нужно вставить данные о нем.</p>



<p>Мы можете выводить любую информацию в этот столбец, дальше уже зависит от Вашей фантазии.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webgleb.ru/wordpress/woocommerce-extra-product-column/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Проверка натуральной степени тройки</title>
		<link>https://webgleb.ru/php/proverka-naturalnoj-stepeni-trojki/</link>
					<comments>https://webgleb.ru/php/proverka-naturalnoj-stepeni-trojki/#respond</comments>
		
		<dc:creator><![CDATA[webgleb]]></dc:creator>
		<pubDate>Mon, 07 Sep 2020 21:29:09 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://webgleb.ru/?p=21</guid>

					<description><![CDATA[Функция: которая определяет, является ли переданное число натуральное степенью тройки или нет.]]></description>
										<content:encoded><![CDATA[
<p><strong>Задача</strong>: Реализуйте функцию <em>isPowerOfThree </em>которая определяет, является ли переданное число натуральной степенью тройки.</p>



<p><strong>Решение</strong>: Подумал, что задачку можно решить через цикл for. Начнем перебор с присвоения $i = 0. Будем перебирать до тех пор, пока $i будет меньше или равно принимаемому аргументу функции <em>isPowerOfThree</em>.</p>



<p>Дальше создадим условие, где через функцию pow проверим, будет ли число 3, возведенное в степень $i равно принимаемому аргументу. Если да &#8212; то вернем true.</p>



<p>Если перебор закончился и условие не выполнено &#8212; вернем false.</p>



<p>Решение на PHP:</p>


<pre class="brush: php; title: ; notranslate">
function isPowerOfThree($a)
{
    for ($i = 0; $i &lt;= $a; $i++) {
        if (pow(3, $i) == $a) {
            return true;
        }
    }

    return false;
}
</pre>]]></content:encoded>
					
					<wfw:commentRss>https://webgleb.ru/php/proverka-naturalnoj-stepeni-trojki/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Реализация палиндрома</title>
		<link>https://webgleb.ru/php/realizacziya-palindroma/</link>
					<comments>https://webgleb.ru/php/realizacziya-palindroma/#respond</comments>
		
		<dc:creator><![CDATA[webgleb]]></dc:creator>
		<pubDate>Mon, 07 Sep 2020 20:19:20 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://webgleb.ru/?p=17</guid>

					<description><![CDATA[Реализация функции, которая определяет, является ли слово палиндромом и возвращает логическое значение (true/false).]]></description>
										<content:encoded><![CDATA[
<p><strong>Задача</strong>: Реализуйте функцию <em>isPalindrome</em>, которая принимает на вход слово, определяет является ли оно палиндромом и возвращает логическое значение.</p>



<p><strong>Решение</strong>: Определить длину вводного значения, после чего узнать середину через функцию ceil. Дальше циклом for дойти до середины слова, при этом сравнивая попарно символы с обеих концов.</p>



<p>Решение на PHP:</p>


<pre class="brush: php; title: ; notranslate">
function isPalindrome($phrase)
{
    $lenght = strlen($phrase);
    
    if ($lenght == 1) {
        return true;
    }

    $split = ceil($lenght / 2);

    for ($i = 1; $i &lt;= $split; $i++) {
        $first = $i - 1;
        $last = $lenght - $i;
        if ($phrase[$first] != $phrase[$last]) {
            return false;
        }
    }

    return true;
}
</pre>]]></content:encoded>
					
					<wfw:commentRss>https://webgleb.ru/php/realizacziya-palindroma/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
