Заменить битые картинки на заглушку

Решение только для сайтов на вордпресс. Код разместить в файле 404.php текущей темы оформления:

<?php
header("HTTP/1.0 404 Not Found");

if (isset($_SERVER['REQUEST_URI']) && preg_match("/(jpg|jpeg|gif|png)$/", $_SERVER['REQUEST_URI']))
{

$src = "noimage.png";
$image = imagecreatefrompng($src);
header("Content-type: image/png");
imagepng($image);
}
get_header();
?>
<style>
.page_404 {
    min-height: 80vh;
    font-size: 42px;
    display: flex;
    justify-content: center;
    align-items: center;
}
</style>
<div class="page_404">
    Page Not Found
</div>
<?php
get_footer();?>

 

 

addPX to inline styles

Добавить величины px всем inline стилям при position:absolute

function listFolderFiles($dir){
    $ffs = scandir($dir);

    unset($ffs[array_search('.', $ffs, true)]);
    unset($ffs[array_search('..', $ffs, true)]);

    // prevent empty ordered elements
    if (count($ffs) < 1)
        return;

    foreach($ffs as $ff){
        if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
        else {
            $html = file_get_contents($dir.'/'.$ff);
            foreach(['left', 'right','width', 'height', 'top', 'bottom'] as $pref) {
                $pattern = "/$pref:(\d{1,4});/";
                $replacement = $pref.':${1}px;';
                $html = preg_replace($pattern, $replacement, $html);
            }
            file_put_contents($dir.'/'.$ff, $html);
        }
    }
}

listFolderFiles("binditall");

 

Проверка пинга страниц из csv файла

Данный код php разместить в корне сайта, выводит только список страниц у которых код ответа не 200. В том числе страницы с редиректом.

<?php
set_time_limit(0);
$urls = [];
if (($handle = fopen("pages2.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($data[0] == "#") continue;
        $url = $data[0];
        $urls[] = $url;
    }
    fclose($handle);
}

$mh = curl_multi_init();
$ch = [];
foreach ($urls as $k => $url) {
    $ch[$k] = curl_init($url);
    curl_setopt($ch[$k], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh,$ch[$k]);
}

do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

foreach(array_keys($ch) as $key) {
    // Проверяем наличие ошибок
    if (!curl_errno($ch[$key])) {
        switch ($http_code = curl_getinfo($ch[$key], CURLINFO_HTTP_CODE)) {
            case 200:  /*echo 'Код HTTP: ' . $http_code . ' - <a href='.$urls[$key].'>'.$urls[$key].'</a><br />'; # OK*/
                break;
            default:
                echo 'Неожиданный код HTTP: ' . $http_code . ' - <a href='.$urls[$key].'>'.$urls[$key].'</a><br />';
            break;    
        }
    }
    curl_multi_remove_handle($mh, $ch[$key]);
}
curl_multi_close($mh);

 

Установка ispmanager на ubuntu

https://eternalhost.net/base/vps-vds/ustanovka-ispmanager-5-lite

Также необходимо иметь в виду, что ispmanager не поддерживает ubuntu 18.10, но на ubuntu 18.04 работает.

Также ispmanager не работает на CentOS 8

Список поддерживаемых ОС https://docs.ispsystem.ru/vmmanager-admin/shablony/operatsionnye-sistemy

MySQL оставить рандомное количество комментариев

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

UPDATE in_comments u1 SET u1.comment_approved = 1 WHERE 1

И после этого сразу же выполнять основной запрос.

	
SET @row_number1 = 0;
SET @row_number11 = 0;
SET @max_number11 = 5;
SET @min_number11 = 3;

UPDATE in_comments u1
SET
u1.comment_approved = 0
WHERE u1.comment_ID in
(

select aaa1.comment_ID from 
(
SELECT (@row_number1:=@row_number1 + 1) AS num1, 
a1.*
FROM in_comments a1
order by a1.comment_post_ID, a1.comment_date desc, a1.comment_ID asc) aaa1,
(

select aa1.* from

(SELECT (@row_number11:=@row_number11 + 1) AS num2, 
a1.*
FROM in_comments a1
order by a1.comment_post_ID, a1.comment_date desc, a1.comment_ID asc) aa1,
(SELECT a2.*
FROM in_comments a2
where a2.comment_date = (select max(ta2.comment_date) as max_date from in_comments ta2 where ta2.comment_post_ID = a2.comment_post_ID)
order by a2.comment_post_ID, a2.comment_date desc, a2.comment_ID asc) aa2
where aa1.comment_ID = aa2.comment_ID	
	and aa1.comment_post_ID = aa2.comment_post_ID
) aaa2
where aaa1.num1 >= aaa2.num2 + FLOOR(RAND() * (@max_number11 - @min_number11 + 1)) + @min_number11
and aaa1.comment_post_ID = aaa2.comment_post_ID
) 

 

Обновление minicart после изменения количества товара

/*ajax minicart update*/
add_filter( 'woocommerce_add_to_cart_fragments', 'header_add_to_cart_fragment', 30, 1 );
function header_add_to_cart_fragment( $fragments ) {
    global $woocommerce;

    ob_start();

    ?>
    <div class="count cart_totals2">
        <span class="amount"><?php 	echo WC()->cart->get_cart_subtotal(); ?></span>
        <span class="count"><?php	echo WC()->cart->get_cart_contents_count();?></span>
    </div>
    <?php
    $fragments['div.cart_totals2'] = ob_get_clean();

    return $fragments;
}

Данный код добавляется в functions.php и позволяет при изменении количества товаров на странице cart по ajax обновить содержимое minicart. В данном случае это div с классом cart_totals2.

Привязать товары к автору

/* allow show products for author*/
add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts($query) {
    if ($query->is_author() && $query->is_main_query()) {
        $query->set('post_type', 'product');
    }
}

 

Редирект с www ngnix

В случае, если на веб сервере установлен apache, то редиректы настраиваются в файле .htaccess. Если же установлен ngnix, то необходимо изменять конфиг домена. В случае необходимости добавления редиректа с www на без необходимо дописать код

if ($http_host !~ "^site.ru$"){
rewrite ^(.*)$ https://site.ru$1 redirect;
}