понедельник, 23 февраля 2015 г.

Прекрасный гол Los Angeles King vs San Jose Sharks

Прекрасный гол Los Angeles King vs San Jose Sharks


Про первый гол я уже где-то написал. Красавец, с длинной дистанции. Сейчас таких мало. Оборона не дремлет. На скрине слева готовится пробить товарищ. Матч супернапряженный. Впечатляют размеры стадиона. 
Везде пишу, что работаю только средствами GNU-программ. Чего и вам желаю.
Голова забита картинками зомби с антимайдана. Только виртуальность. Спасительная. Будем смотреть спорт и фантастическое кино. Всем привет. Сомневаюсь, правда, что кто-то читает.

пятница, 20 февраля 2015 г.

Devil against Exorcist

Как добавить поле к форме регистрации и профилю пользователя Wordpress woocommerce

добавить поле к форме регистрации woocommerce wordpress


Задача стоит такая: Предложить новому пользователю выбрать, физическое он лицо или юридическое и добавить поле к форме регистрации woocommerce wordpress. Если юридическое, то попросить у него название компании и все реквизиты. Потом к юридическому лицу применяются скидки на разные виды опта. Или не применяются. В WordPress есть hooks, то есть «крючки» или «зацепки». А проще это объяснить, если понять, что страница wordpress формируется сначала в буфере, поэтому возможны операции уже с готовой страницей, но еще не отданной по http. Вот туда и вставляются результаты работы функций, вызываемых с помощью hooks. add_action и add_filter — синонимы. Это как-то туманно, но надо запомнить и всё. Итак, добавляем поле выбора юридического статуса к форме регистрации.

add_action( 'woocommerce_register_form', 'abc_show_person_or_company' );

show_person_or_company — мне нравятся говорящие названия. woocommerce_register_form — hook, событие после отрисовки основных данных формы регистрации, типа. Ну и функция, которая будет вызываться.

function abc_show_person_or_company()
 echo "<p class=\"form-row form-row-wide\"><select class=\"input-text\" name=\"person_or_company\" id=\"person_or_company\">";
 echo "<option value=\"_person\" ";
 if($_POST['person_or_company'] == '_person') echo "selected=\"selected\"";
 echo ">Физическое лицо</option>";
 echo "<option value=\"_company\" ";
if($_POST['person_or_company'] == '_company') echo "selected=\"selected\"";
 echo ">Юридическое лицо</option>";
 echo "</select></p>";?>
 <script> 
 jQuery( "#person_or_company" ).change(function() 
 switch (jQuery( "select#person_or_company" ).val()) 
 case '_person':
 jQuery( "p#_company_name_p" ).css( "display", "none");
 break
 case '_company':
 jQuery( "p#_company_name_p" ).css( "display", "block"); 
 break);
 </script> 
 <?php
 echo "<p id=\"_company_name_p\" class=\"form-row form-row-wide\" style=\"display: none;\">" .
 "<label for=\"_company_name\">Название компании<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_company_name\" " .
 "id=\"_company_name\" value=\""; 
 if ( ! empty( $_POST['_company_name'] ) ) echo esc_attr( $_POST['_company_name'] );
 echo "\">";
echo "<label for=\"_inn\">ИНН<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_inn\" " .
 "id=\"_inn\" value=\""; 
 if ( ! empty( $_POST['_inn'] ) ) echo esc_attr( $_POST['_inn'] );
 echo "\">";
 echo "<label for=\"_kpp\">КПП<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_kpp\" " .
 "id=\"_kpp\" value=\""; 
 if ( ! empty( $_POST['_kpp'] ) ) echo esc_attr( $_POST['_kpp'] );
 echo "\">";
 echo "<label for=\"_rschet\">Р\счет<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_rschet\" " .
 "id=\"_rschet\" value=\""; 
 if ( ! empty( $_POST['_rschet'] ) ) echo esc_attr( $_POST['_rschet'] );
 echo "\">"; 
 echo "<label for=\"_bik\">БИК<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_bik\" " .
 "id=\"_bik\" value=\""; 
 if ( ! empty( $_POST['_bik'] ) ) echo esc_attr( $_POST['_bik'] );
 echo "\">";
echo "<label for=\"_korschet\">К\счет<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_korschet\" " .
 "id=\"_korschet\" value=\""; 
 if ( ! empty( $_POST['_korschet'] ) ) echo esc_attr( $_POST['_korschet'] );
 echo "\">";
echo "<label for=\"_bank_name\">Название банка<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_bank_name\" " .
 "id=\"_bank_name\" value=\""; 
 if ( ! empty( $_POST['_bank_name'] ) ) echo esc_attr( $_POST['_bank_name'] );
 echo "\">";
echo "<label for=\"_jur_address\">Юридический адрес<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_jur_address\" " .
 "id=\"_jur_address\" value=\""; 
 if ( ! empty( $_POST['_jur_address'] ) ) echo esc_attr( $_POST['_jur_address'] );
 echo "\">";
echo "<label for=\"_telephon\">Телефон<span class=\"required\">*</span></label>" .
 "<input type=\"text\" class=\"input-text\" name=\"_telephon\" " .
 "id=\"_telephon\" value=\""; 
 if ( ! empty( $_POST['_telephon'] ) ) echo esc_attr( $_POST['_telephon'] );
 echo "\">";
 echo "</p>";

У физических лиц нет названия компании, а у юридических — необходимое условие, как и все остальные реквизиты. Как ни странно, работает. Дальше расскажу(сам себе), как эти поля проверить и сохранить в базе.

Перед обработкой нужно проверить, ввел ли корпоративный пользователь свои реквизиты. Лично я считаю, что покупка и расчет должны осуществляться в один-два клика, но заказчик считает так, как он считает.

Поэтому добавляем туда же, то есть в functions выбранного шаблона, хук и проверку полей.

add_action('woocommerce_registration_errors', '_registration_errors_validation', 10,3);

И сама функция.

function _registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) 
  global $woocommerce;
 
  extract($_POST); // extracting $_POST into separate variables
 //print_r($_company_name);
  if($person_or_company == '_company' ) 
  return $reg_errors;

Дальше немного сложнее, поскольку заказчик решил изменить стандартный ход регистрации. Пост набрал 300 слов, поэтому пока достаточно.

Поставим плагин, поскольку с ним удобнее. И немного его поправим, чтобы сохранить все наши поля. Всем привет, если кто читал, в чем я сомневаюсь.


Как добавить поле к форме регистрации и профилю пользователя Wordpress woocommerce

вторник, 17 февраля 2015 г.

Test

Test

Test Post from Просто пар

Test Post from Просто пар http://prostopar.ru