Перевірка дозволів на решта Woocommerce

Posted Leave a commentPosted in Поради / рекомендації
REST-API WOOCOMERCE

add_filter( 'woocommerce_rest_check_permissions', 'my_woocommerce_rest_check_permissions', 90, 4 ); function my_woocommerce_rest_check_permissions( $permission, $context, $object_id, $post_type ){ return true; }

редирект со страницы на страницу

RewriteCond %{QUERY_STRING} ^_route_=login/$
RewriteRule ^(.*)$ http://liga-spice.com.ua/? [R=301,L]

Відображення сторінок лише авторизованим користувачам wordpress

Posted Leave a commentPosted in Поради / рекомендації
function prefix_redirect_function() {
if ( is_page(552 , 554) && !is_user_logged_in() ) { // 42 это ID
// редирект на главную:        wp_redirect( home_url() );
// или так на url:
// wp_redirect( ‘http://www.example.com’, 301 );exit;
    }
}
.page-id-296 .zip-check {display:none}

Як автоматично додавати теги alt і title продукту в Woocommerce

Posted Leave a commentPosted in Поради / рекомендації
add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);
function change_attachement_image_attributes($attr, $attachment) {
    global $post;
    if ($post->post_type == 'product') {
        $title = $post->post_title;
        $attr['alt'] = $title;
        $attr['title'] = $title;
    }
    return $attr;
}

Встановіть файл cookie та закрийте спливаюче вікно після надсилання Contact Form 7 form

Posted Leave a commentPosted in Поради / рекомендації
<?php
// As is this will check if the form is in a popup, if so set a cookie and close after 5 seconds.

// Copy everything below this line.
function custom_cf7_scripts() { ?>
	<script type="text/javascript">
		var wpcf7Elm = document.querySelector('.wpcf7');

		wpcf7Elm.addEventListener('wpcf7submit', function (event) {
			var $form = $(event.target),
				$popup = $form.parents('.pum');

			if (!$popup.length) {
				return;
			}
			
			$popup.trigger('pumSetCookie');

			setTimeout(function () {
				$popup.popmake('close');
			}, 5000);
		}, false);
	</script><?php
}

add_action( 'wp_footer', 'custom_cf7_scripts' );

Платіжний віджет Liqpay

Posted Leave a commentPosted in Поради / рекомендації
$liqpay = new LiqPay($public_key, $private_key);
$html = $liqpay->cnb_form(array(
'action'         => 'pay',
'amount'         => '1',
'currency'       => 'USD',
'description'    => 'description text',
'order_id'       => 'order_id_1',
'version'        => '3'
));
Параметри платіжного віджета
dataRequiredStringjson рядок з параметрами APIs закодований функцією base64_encode( json_string ), де base64_encode – повертає рядок, закодований методом base64
signatureRequiredStringУнікальний підпис кожного запиту base64_encode( sha1( private_key + data + private_key) ), де sha1 – повертається хеш у вигляді бінарного рядку з 20 символів.
embedToOptionalStringЕлемент на HTML-сторінці в якому буде відображений віджет
modeOptionalStringРежим відображення віджета на сайті. Можливі значення: embed – вбудоване вікно, popup – спливаюче вікно на Вашому сайті.
languageOptionalStringМова відображення віджету ruuken.
  <div id="liqpay_checkout"></div>
  <script>
	window.LiqPayCheckoutCallback = function() {
		LiqPayCheckout.init({
			data: "eyAidmVyc2lvbiIgOiAzLCAicHVibGljX2tleSIgOiAieW91cl9wdWJsaWNfa2V5IiwgImFjdGlv" +
			"biIgOiAicGF5IiwgImFtb3VudCIgOiAxLCAiY3VycmVuY3kiIDogIlVTRCIsICJkZXNjcmlwdGlv" +
			"biIgOiAiZGVzY3JpcHRpb24gdGV4dCIsICJvcmRlcl9pZCIgOiAib3JkZXJfaWRfMSIgfQ==",
			signature: "QvJD5u9Fg55PCx/Hdz6lzWtYwcI=",
			embedTo: "#liqpay_checkout",
			language: "ru",
			mode: "embed" // embed || popup
		}).on("liqpay.callback", function(data){
			console.log(data.status);
			console.log(data);
		}).on("liqpay.ready", function(data){
			// ready
		}).on("liqpay.close", function(data){
			// close
		});
	};
  </script>
  <script src="//static.liqpay.ua/libjs/checkout.js" async></script>
Параметри для формування data:
Основні
ParameterRequiredTypeDescription
versionRequiredNumberВерсія API. Поточне значення – 3
public_keyRequiredStringПублічний ключ – ідентифікатор магазину. Отримати ключ можна в налаштуваннях магазину
actionRequiredStringТип операції. Можливі значення: pay – платіж, hold – блокування коштів на рахунку відправника, subscribe – регулярний платіж, paydonate – пожертва, auth – предавторізація картки
amountRequiredNumberСума платежу. Наприклад: 57.34
currencyRequiredStringВалюта платежу. Можливі значення: USDEURUAH
descriptionRequiredStringПризначення платежу.
order_idRequiredStringУнікальний ID покупки у Вашому магазині. Максимальна довжина 255 символів.
expired_dateOptionalStringЧас до якого клієнт може оплатити рахунок за UTC. Передається в форматі 2016-04-24 00:00:00
languageOptionalStringМова клієнта ruuken
paytypesOptionalStringПараметр в якому передаються способи оплати, які будуть відображені на чекауті. Можливі значення apay – оплата за допомогою Apple Pay, gpay – оплата за допомогою Google Pay, card – оплата карткою, liqpay – через кабінет liqpay, privat24 – через кабінет приват24, masterpass – через кабінет masterpass, moment_part – розстрочка, cash – готівкою, invoice – рахунок на e-mail, qr – сканування qr-коду. Якщо параметр не переданий, то застосовуються настройки магазину, вкладка Checkout.
result_urlOptionalStringURL у Вашому магазині на який покупець буде переадресовано після завершення покупки. Максимальна довжина510 символів.
server_urlOptionalStringURL API в Вашому магазині для повідомлень про зміну статусу платежу (сервер->сервер). Максимальна довжина 510 символів. Детальніше
verifycodeOptionalStringМожливе значення Y. Динамічний код верифікації, генерується і повертається в Callback. Так само згенерований код буде переданий в транзакції верифікації для відображення у виписці по картці клієнта. Працює для actionauth.

Платіж з розщепленням суми на декількох одержувачів. У цьому параметрі вказується JSON масив з правилами розщеплення платежу. При використанні параметра split_rules відбувається одне списання з клієнта і кілька зарахувань одержувачам. Еквайрингова комісія стягується з кожного магазину в масиві split_rules. Приклад JSON рядка:

[
  {
    "public_key": "i000000001",
    "amount": 1,
    "commission_payer": "sender",
    "server_url": "https://server1/callback"
  },
  {
    "public_key": "i000000002",
    "amount": 2,
    "commission_payer": "receiver",
    "server_url": "https://server2/callback"
  }
]
Параметри відправника
sender_address NEWOptionalStringАдреса відправника
sender_cityOptionalStringМісто відправника
sender_country_codeOptionalStringКод країни відправника. Цифровий ISO 3166-1 код
sender_first_nameOptionalStringІм’я відправника
sender_last_nameOptionalStringПрізвище відправника
sender_postal_codeOptionalStringПоштовий індекс відправника
Параметри захищеного платежу
letter_of_creditOptionalStringЩоб включити прийом платежів за акредитивом передайте параметр із значенням1
letter_of_credit_dateOptionalStringДата закінчення терміну акредитива в наступному форматі 2015-03-31 00:00:00 по UTC.
Параметри регулярного платежу
subscribeOptionalStringРегулярний платіж. Можливі значення: 1
subscribe_date_startOptionalStringДата першого платежу. Час необхідно вказувати в такому форматі 2015-03-31 00:00:00 по UTC. Якщо вказана минула дата, то підписка буде активована з поточної дати отримання запиту
subscribe_periodicityOptionalStringПеріодичність списання коштів. Можливі значення:
month – раз на місяць
year – раз на рік
Параметри для оплати в 1 клік
customerOptionalStringУнікальний ідентифікатор клієнта на сайті мерчанта. При передачі параметра LiqPay запам’ятовує платіжні реквізити клієнта і його ідентифікатор – подальша оплата може бути проведена в 1 клік. Максимальна довжина 100 символів.
(При використанні параметра для <b>Masterpass 1 клік</b>, в даному полі передається валідный номер телефону платника)
recurringbytokenOptionalStringДозволяє генерувати card_token платника, який ви отримаєте в callback запиті на server_urlcard_token дозволяє проводити платежі без введення реквізитів картки платника, використовуючи API оплати за токеном – тобто в 1 клік. Для отримання card_token необхідно передати в запиті значення: 1
customer_user_idOptionalStringІдентифікатор користувача в системі мерчанта, передається при кожній оплаті користувача (не повинен збігатися з customer, використовується для оплати за допомогою гаманця <b>Masterpass 1 клік</b>)
Інші параметри
daeOptionalStringДовгий запис Detail Addenda.
Параметр dae являє собою JSON рядок, до якого застосували функцію base64JSON може містити наступні параметри:
{
  "airLine": "Avia", // абревіатура авіакомпанії, max 4 символів.
  "ticketNumber": "ACSFD12354SA", // номер квитка, max 15 символів. 
  "passengerName": "John Doe", // ім'я пасажира, max 29 символів.
  "flightNumber": "742", // номер рейсу, max 5 цифр.
  "originCity": "DP", // код міста/аеропорту вильоту, max 5 символів.
  "destinationCity": "NY", // код міста/аеропорту призначення, max 5 символів.
  "departureDate": "100514" // дата вильоту в форматі YYMMDD, max 6 цифр.
}

Виправлення поширеної помилки jQuery в WordPress

Posted Leave a commentPosted in Поради / рекомендації
wp_enqueue_script( 'tt-mobile-menu', get_template_directory_uri() .

'/js/mobile-menu.js', array('jquery'), '1.0', true );

jQuery(document).ready(function()

{

jQuery(#selector) ...

});

(function($) {

// Use $() inside of this function

$(#selector) ...

})(jQuery);
<script src="http://code.jquery.com/jquery-1.11.2.min.js" type="text/javascript"></script>

Як скрити повідомлення або сторінки від администратора WordPress

Posted Leave a commentPosted in Поради / рекомендації
function true_hide_pages_from_admin( $query ) {
	global $pagenow;
	if( is_admin() && 'edit.php' == $pagenow && 'page' == get_query_var('post_type') ){
		// в качестве 'page' в условии можно указать любой произвольный тип постов
		$query->set( 'post__not_in', array(300,271) ); 
		// через запятую прописываем ID страниц, которые хотим скрыть
	}
	return $query;
}
 
add_action( 'pre_get_posts' ,'true_hide_pages_from_admin' );
function true_hide_posts_from_admin( $query ) {
	global $pagenow;
	if( is_admin() && 'edit.php' == $pagenow ){
		$query->set( 'post__not_in', array(9,54) ); 
		// через запятую указываем ID постов или страниц, которые хотим скрыть
	}
	return $query;
}
 
add_action( 'pre_get_posts' ,'true_hide_posts_from_admin' );
function true_hide_all( $query ) {
	$query->set( 'post__not_in', array(300,271) ); 
	return $query;
}
 
add_action( 'pre_get_posts' ,'true_hide_all' ); 

Змінити фото в URL-адресі

Posted 2 коментаріPosted in Поради / рекомендації
<meta name="viewport" content="width=device-width, initial-scale=1">
   <meta property="og:image" content="https://onmywaystudio.net/wp-content/uploads/2018/05/cropped-download-1-1.png;" />
<meta property="og:image:secure_url" content="https://onmywaystudio.net/wp-content/uploads/2018/05/cropped-download-1-1.png"; />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="300" />
<meta property="og:image:alt" content="" />

Додавання згоди на політику конфіденційності WooCommerce

Posted Leave a commentPosted in Поради / рекомендації
// Добавление чекбокса
add_action( 'woocommerce_review_order_before_submit', 'truemisha_privacy_checkbox', 25 );
 
function truemisha_privacy_checkbox() {
 
	woocommerce_form_field( 'privacy_policy_checkbox', array(
		'type'          => 'checkbox',
		'class'         => array( 'form-row' ),
		'label_class'   => array( 'woocommerce-form__label-for-checkbox' ),
		'input_class'   => array( 'woocommerce-form__input-checkbox' ),
		'required'      => true,
		'label'         => 'Принимаю <a href="' . get_privacy_policy_url() . '">Политику конфиденциальности</a>',
	));
 
}
 
// Валидация
add_action( 'woocommerce_checkout_process', 'truemisha_privacy_checkbox_error', 25 );
 
function truemisha_privacy_checkbox_error() {
 
	if ( empty( $_POST[ 'privacy_policy_checkbox' ] ) ) {
		wc_add_notice( 'Ваш нужно принять политику конфиденциальности.', 'error' );
	}
 
}
// Добавление чекбокса
add_action( 'woocommerce_register_form', 'truemisha_registration_privacy_checkbox', 25 );
 
function truemisha_registration_privacy_checkbox() {
 
	woocommerce_form_field(
		'privacy_policy_reg',
		array(
			'type'          => 'checkbox',
			'class'         => array( 'form-row' ),
			'label_class'   => array( 'woocommerce-form__label-for-checkbox' ),
			'input_class'   => array( 'woocommerce-form__input-checkbox' ),
			'required'      => true,
			'label'         => 'Принимаю <a href="' . get_privacy_policy_url() . '">Политику конфиденциальности</a>',
		)
	);
 
}
 
// Валидация
add_filter( 'woocommerce_registration_errors', 'truemisha_registration_privacy_checkbox_error', 25 );
 
function truemisha_registration_privacy_checkbox_error( $errors ) {
 
	if( is_checkout() ) {
		return $errors;
	}
 
	if ( empty( $_POST[ 'privacy_policy_reg' ] ) ) {
		$errors->add( 'privacy_policy_reg_error', 'Ваш нужно принять политику конфиденциальности.' );
	}
 
	return $errors;
 
}