DEST_WWW_PATH="/path/to/www/folder"
CURRENT_PATH=$(pwd)
SITE_FOLDERS=("site.ru" "site2.ru")
for SITE_FOLDER in ${SITE_FOLDERS[@]}; do
CURRENT_FOLDER="${CURRENT_PATH}/${SITE_FOLDER}"
DB_NAME=$(/bin/grep -oP "define\(['\"]DB_NAME['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" "${CURRENT_FOLDER}/wp-config.php")
DB_USER=$(/bin/grep -oP "define\(['\"]DB_USER['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" "${CURRENT_FOLDER}/wp-config.php")
DB_PASSWORD=$(/bin/grep -oP "define\(['\"]DB_PASSWORD['\"],\s*['\"]\K[^'\"]+(?=[\'\"]\s*\)\s*;)" "${CURRENT_FOLDER}/wp-config.php")
/usr/bin/mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | /bin/gzip -9 > dump.sql.gz
/usr/bin/rsync -rvp user@XXX.XXX.XXX.XXX:"${DEST_WWW_PATH}/${SITE_FOLDER}/" $CURRENT_FOLDER
/bin/rm -f dump.sql.gz
done
body {
min-height: 100vh;
min-height: -webkit-fill-available;
}
html {
height: -webkit-fill-available;
}
RewriteCond %{REQUEST_URI} ^/dir1/(.*)$
# если строка начинается с /dir1/
RewriteRule ^(.*)$ /dir1%1 [R=301,L]
RewriteCond %{REQUEST_URI} ^(.*)/dir1/(.*)$
# если строка содержит /dir1/
RewriteRule ^(.*)$ %1/dir2/%2 [R=301,L]
data-modal
, в котором будет храниться идентификатор(например id) нужного вам модального окна, ваш код может выглядеть так - https://jsfiddle.net/jtLvyrco/4/ -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); /* this fixes the overflow:hidden in Chrome/Opera */
function prefix_automatically_add_to_cart()
{
// Сначала решите как будете передавать ID товара - через
// GET в ссылке, через кастомный rewrite, POST, куки и тд.
// Далее, здесь получаете этот ID, в зависимости от решения выше.
$product_id = 1;
if ( WC()->cart->get_cart_contents_count() === 0 ) {
// Програмно добавляем товар в корзину
WC()->cart->add_to_cart( $product_id );
// Переадресовываем на корзину (или чекаут)
wp_redirect( WC()->cart->get_cart_url() );
// wp_redirect( WC()->cart->get_checkout_url() );
die;
}
}
add_action( 'template_redirect', 'prefix_automatically_add_to_cart' );
$('.owl-carousel').owlCarousel({
loop:true,
nav:true,
items:5,
center:true,
onInitialized: carouselFirstLastActive
});
$('.owl-carousel').on('translate.owl.carousel', function(e){
carouselFirstLastActive(e);
});
function carouselFirstLastActive(e){
var idx = e.item.index;
$('.owl-item').removeClass('last last_second first second');
$('.owl-item').eq(idx-1).addClass('second');
$('.owl-item').eq(idx-2).addClass('first');
$('.owl-item').eq(idx+1).addClass('last_second');
$('.owl-item').eq(idx+2).addClass('last');
}
/************************************************************************/
/************************************************************************/
/*
* Добавляем возможность скидки 50% на второй (самый дешевый) товар к корзине
* только для товаров категории $category_id = 914; // slag = 'aktsiya-2-1'
*/
add_action( 'woocommerce_cart_calculate_fees','hml_fee_two_plus_one', 10, 1 );
function hml_fee_two_plus_one( WC_Cart $cart_object ) {
global $wpdb, $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) { return; }
$arr_cart = $cart_object->get_cart();
if ( 0 == sizeof($arr_cart) ) { return; }
//if ( is_user_logged_in() ) {
// $customer_id = get_current_user_id();
//}
//if ( 1 == $customer_id ) { // only for admin
$count = 0;
$min_price = 0;
$category_id = 914; // slag = 'aktsiya-2-1'
$cats = hml_get_category_gender_line( $category_id ); // смотри ниже
foreach( $arr_cart as $item_key => $value ) {
if ( has_term($cats, 'product_cat', $value['product_id'] ) ) {
$count += $value["quantity"];
$product = $value['data'];
$price = $product->get_price();
if ( $price ) { $prices[] = floatval($price); }
}
}
$min_price = max( $min_price, min($prices) );
if ( $count >= 2 && $min_price > 0 ) {
$fee = -1 * $min_price/2;
$cart_object->add_fee( __('Акция: 2я вещь -50%'), $fee );
}
//}
}
// получаем массив всех вложенных категорий
function hml_get_category_gender_line( $cat_parent ){
// get_term_children() accepts integer ID only
$line = get_term_children( (int) $cat_parent, 'product_cat');
$line[] = $cat_parent;
return $line;
}
/************************************************************************/
<article>
<img srcset="https://dummyimage.com/2560x400/333/fff 2x,
https://dummyimage.com/1280x400/333/fff 1x"
sizes="(min-width: 1280px) 1280px, 100vw"
alt="A title">
</article>
srcset=https://dummyimage.com/2560x400/333/fff
так как у них плотность пикселей 2x. PageSpeedInsights эмулирует отображение на аналогичном смартфоне. <picture>
<!-- source для браузеров поддерживающих webp, соответственно srcset тоже должен указывать на webp-->
<source type="image/webp" srcset="https://dummyimage.com/575x150/333/fff 1x, https://dummyimage.com/1150x300/333/fff 2x," media="(max-width: 575px)">
<!-- source для браузеров не поддерживающих webp -->
<source srcset="https://dummyimage.com/575x150/333/fff 1x, https://dummyimage.com/1150x300/333/fff 2x," media="(max-width: 575px)">
... <!-- все остальные необходимые размеры, вроде планшетов и т.д. -->
<!-- fallback для браузеров не поддерживающих элемент picture -->
<img src="https://dummyimage.com/2560x400/333/fff" alt="A title">
</picture
Как во Frontend куча индусов рвётся за заказами или нет?