• Перенос файлов между серверами без моего участия?

    @Drno
    rcyns или rclone
    в конец команды добавьте & и можете отключить путти

    Да, закрывая путти Вы закрываете сессию юзера, поэтому вся активность прекращается
    Ответ написан
    Комментировать
  • Перенос файлов между серверами без моего участия?

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

    В сессии screen, уже не боясь оставить/отключиться, вместо scp, может, удобнее воспользоваться rsync — он зипует, что может ускорить передачу:
    rsync -avz /var/www/projectOldName  user@newserver.example.com://var/www/projectNewName

    И нажать Ctrl + A, D — чтобы покинуть работающий вирт. терминал и спокойно отключиться от SSH. Позже, когда снова зайдете, командой screen -r снова подключитесь к оставленной сессии.
    Ответ написан
    Комментировать
  • Код для вывода произвольных полей ACF?

    @weart
    if ( get_field('mobile') ) {
    	
    	if ( wp_is_mobile() ) {		
    		the_fields();	
    	} else {
    		acf 5
    	}
    	
    } else {
    	the_fields();
    }
    
    function the_fields() {
    	acf 1 
    	
    	acf 2
    	
    	acf 3
    	
    	acf 4
    }
    Ответ написан
    Комментировать
  • Добавить класс к div в коде JS?

    mirniycruxix
    @mirniycruxix
    Добавьте строчку newElement.classList.add('Class');, где Class - имя вашего класса.

    var downloadButton = document.getElementById("download");
    var counter = 10;
    var newElement = document.createElement("div");
    newElement.innerHTML = "You can download the file in 10 seconds.";
    var id;
    
    newElement.classList.add('Class');
    
    downloadButton.parentNode.replaceChild(newElement, downloadButton);
    
    id = setInterval(function() {
        counter--;
        if(counter < 0) {
            newElement.parentNode.replaceChild(downloadButton, newElement);
            clearInterval(id);
        } else {
            newElement.innerHTML = "You can download the file in " + counter.toString() + " seconds.";
        }
    },  1000);
    Ответ написан
    1 комментарий
  • Вывод определенного заголовка в зависимости от рубрики wordpress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Например так, внутри цикла
    <?php
    $categories = get_the_category();
    $cat_slug = $categories[0]->slug;
    if ( $cat_slug === 'houses') {
    	echo 'Похожие дома';
    } elseif ($cat_slug === 'flats') {
    	echo 'Похожие квартиры';
    }

    Вне цикла
    global $post;
    $categories = get_the_category( $post->ID );
    Ответ написан
  • Как справиться со 100% загрузкой канала на сервере?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    Как справиться со 100% загрузкой канала на сервере?
    Расширить канал.

    а что если и на storage VDS будет забиваться канал под 100%
    Расширить канал.

    Либо вы берете широкий канал, либо вы делаете множество серверов с относительно узким каналом и балансируете нагрузку между ними.
    Ответ написан
    Комментировать
  • Как справиться со 100% загрузкой канала на сервере?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Решил весь софт перенести на какой-нибудь storage VDS, чтобы разгрузить канал основного сервера. Вопрос: а что если и на storage VDS будет забиваться канал под 100% и будет невозможно использовать фтп клиенты.

    Если категорически не подходят CDN-сервисы, то просто увеличивать число виртуалок, на которые параллелятся запросы - ширина канала будет увеличиваться соответственно.
    Ответ написан
    2 комментария
  • Как справиться со 100% загрузкой канала на сервере?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Логично что настраивать приоритеты трафика и шейпинг.
    Ответ написан
    Комментировать
  • Как справиться со 100% загрузкой канала на сервере?

    Лимитировать скорость отдачи файлов, резервировать часть канала под управление / FTP
    Или расширить канал.
    Ответ написан
    4 комментария
  • Вопрос по кешированию wordpress на выделенном сервере?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А как именно вы собираетесь кешировать в memcached, как его использовать? Как стандартный object cache? Fragment cache? Full page cache?

    Из всех вариантов кеширования самым быстрым будет Nginx fastcgi_cache, поскольку он будет отдавать статические HTML-страницы прямиком с диска, а то и из памяти – даже не обращаясь к PHP-процессу, не поднимая WordPress и тем более не трогая базу. Но это полная статика, а значит не подойдет если у вас необходимость показывать динамические данные на странице (авторизованные пользователи с личными кабинетами, корзины покупателей и тд).

    WP Super Cache по сути делает то же самое, но на уровне плагина - он генерирует статические HTML-страницы, и веб сервер конфигурируется чтобы отдавать их. Это тоже быстро, минусы плюс-минус те же, но как бонус есть возможность определенной настройки в админке и гибкости. Но это в экспертном режиме. Кроме него он может работать в cмешанных режимах где PHP все-таки задействован, не нужно менять конфиги сервера и при этом можно даже кешировать условно динамические страницы. Это огромное преимущество перед nginx fastcgi_cache, если сайту такая функциональность нужна.

    Нужно ли иметь одновременно и nginx fastcgi_cache и wp super cache? Нет. Выберите одно из двух. Если сайт может полностью жить в статике - nginx fastcgi_cache настроили и забыли. Если логика статики и динамики чуток посложнее - WP Super Cache.

    Независимо от первых 2х вариантов, можно использовать кеширующий бекенд (memcached, redis) для кеширования фрагментов, объектного кеша и любых других данных. Полезно для кеширования .mo файлов переводов, отрендеренных ресурсоемких фрагментов (меню, блоки/виджеты с калькуляциями и тд), стандартного объектного кеша WP и тд. Это второй, внутренний уровень кеширования и важен как раз для динамических запросов, которые не используют full page cache от Nginx / WP Super Cache.
    Ответ написан
    Комментировать
  • Проблемы с бесконечной загрузкой постов при прокрутке страницы wordpress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    При всем уважении к автору конкретно этот тутор - гавно, отсюда и все проблемы, он вообще не по API, а ошибка говорит о том что есть переменная true_posts которая не задана

    Вот вам нормальный тутор https://www.billerickson.net/infinite-scroll-in-wo...
    Ответ написан
    2 комментария
  • Как защитить сайт от такого вида ddos?

    Защита изображений от хотлитка
    location ~ .(gif|png|jpeg|jpg|svg)$ {
         valid_referers none blocked ~.google. ~.bing. ~.yahoo. ~.yandex. yourdomain.com;
         if ($invalid_referer) {
            return   403;
        }
    }


    Вариантов много, но если будет совсем грустно, то можно воспользоваться CDN.
    Ответ написан
    Комментировать
  • Как защитить сайт от такого вида ddos?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Должно подойти решение отсюда - ДДос атака на nginx пакетами 1 байт?
    Ответ написан
    Комментировать
  • Как добавить в цикл wp_query параметр date_query?

    HectorPrima
    @HectorPrima
    программист
    после
    $wp_query -> query('v_sortby=views&v_orderby=desc&posts_per_page=10&what_to_show=posts&post_status=publish'.'&paged='.$paged);

    вставить
    $wp_query = new WP_Query(
    	array_merge(
    		array(
    			'date_query' => array(
    				'before' => array( 'year' => 2018, 'month' => 7, 'day' => 25 ),
    				'after' => array( 'year' => 2018, 'month' => 7, 'day' => 25 ),
    				'inclusive' => true
    			)
    		),
    		$wp_query->query
    	)
    );
    Ответ написан
    2 комментария
  • Выводить текущую дату по умолчанию на JS?

    @stainer
    <div class="calculator_table">
      <select id="calc-month">
        <option value="0">January</option>
        <option value="1">February</option>
        <option value="2">March</option>
        <option value="3">April</option>
        <option value="4">May</option>
        <option value="5">June</option>
        <option value="6">July</option>
        <option value="7">August</option>
        <option value="8">September</option>
        <option value="9">October</option>
        <option value="10">November</option>
        <option value="11">December</option>
      </select>
    
      <select id="calc-day"></select>
      <select id="calc-year"></select>
    
      <p align="center"><button onclick="calculate();return false;">Calculate</button></p>
      <div id="results"></div>
    </div>
    
    <script>
      window.onload = function() 
      {
    	var npw = new Date();
    	var g = npw.getFullYear();
    	var m = npw.getMonth();
    	var da = npw.getDate();
    	
        for (var y = 2014; y < 2050; y++ )
        {
    		document.getElementById('calc-year').innerHTML += '<option value="'+y+'">' + y +'</option>'; 	
        }
    
        for (var d = 1; d <= 31; d++ )
        {
          document.getElementById('calc-day').innerHTML += '<option value="'+d+'">' + d +'</option>'; 
        }
    	document.getElementById('calc-year').value=g;
    	document.getElementById('calc-month').value=m;
    	document.getElementById('calc-day').value=da;
      }
    
      function calculate()
      {
        var monthNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
        var day = Number(document.getElementById('calc-day').value);
        var month = Number(document.getElementById('calc-month').value);
        var year = Number(document.getElementById('calc-year').value);
        var nextday = day + 280;
        var initial = new Date(Date.UTC( year, month, day, 0, 0, 0));
        var predicted = new Date(Date.UTC( year, month, nextday, 0, 0, 0));
        var now = new Date();
    
        var formated = monthNames[predicted.getMonth()] + ' ' + predicted.getDate() + ', ' + predicted.getFullYear();
        var leftDays =  ( predicted.getTime() - now.getTime() ) / (24*3600*1000); 
        var currentWeeks = (now.getTime() - initial.getTime()) / (7*24*3600*1000)
        document.getElementById('results').innerHTML = '<p>Your estimated due date is ' + formated + '</p><p>Days left to your date: '+ parseInt(leftDays) +'</p><p>Weeks of pregnancy: '+ Math.round(currentWeeks) +'</p>';
      }
    </script>


    Это с "текущей датой".
    2-й пункт не понял..
    Ответ написан
    7 комментариев
  • Добавить Нет записей в готовый цикл wordpress?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Не знаю что там в переменных, но, вероятно, как-то так:
    <?php if($posts) : ?>
    <?php foreach($posts as $postdata){ ?>
    
        <?php foreach($postdata as $post){ setup_postdata($post); ?>
    
          
    <div id="post-<?php the_ID(); ?>" <?php post_class('post'); ?>>
    
      Здесь отображение самого поста
            
    </div><!-- /.post -->
          
        <?php } ?>
    
      <?php } ?>
    <?php else : ?>
    <div>Нет записей</div>
    <?php endif; ?>
    Ответ написан
    Комментировать
  • Добавить анимацию скрытию меню навигации?

    Anadi
    @Anadi
    Если ответ Вам помог мой, решением отметье его!
    Я сделал так. Задал стили для хедера
    .header.hide{top: -158px; transition: top .15s ease-in-out;}
    .header {background: #fff; border-bottom: 1px solid #eee; position: absolute; z-index: 100; top: 0; left: 0; right: 0;}

    $(window).scroll(function () {
            if ($(this).scrollTop() > 75) {
                $('.header').addClass('hide');
                return false;
            } else if ($(this).scrollTop() < 158) {
                $('.header').removeClass('hide');
                return false;
            }
    });
    
    if ($(window).scrollTop() > 75) {
         $('.header').addClass('hide');
         return false;
    }

    Высота хедера у меня равна 158px, при скроле на 75px добавляется класс .hide и хедер плавно прячется.
    Ответ написан
    Комментировать
  • Правильность и оптимизация конфига nginx?

    @neol
    У вас в http части есть редирект на https, тогда зачем там всё остальное?
    Если доступ по http не нужен, то эту часть конфига можно сократить до
    server {
      server_name site.ru www.site.ru;
      listen xx.xxx.xx.xx:80;
      return 301 https://$host:443$request_uri;
    }


    Если таки нужен, то можно вынести все дублирующиеся строки в отдельный файл и подключать его через include.
    Ответ написан
    Комментировать
  • Оптимизация сервера под wordpress сайты?

    1) Выкинуть Apache
    2) Перейти на Nginx + php7.0-fpm
    Конфигурация виртуального хоста Nginx для WP примерно такая:
    server {
      server_name example.com;
      listen 80;
      root /home/site1/web;
      access_log /home/site1/logs/access.log;
      error_log /home/site1/logs/error.log;
      index index.php;
    
      location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
      }
    
      location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
        access_log off;
        expires max;
      }
    
      location ~ /\.ht {
        deny  all;
      }
            location ~ \.php$ {
                      try_files $uri =404;
                      fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass unix:/run/php/site1.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
            }
    }

    Затем создаёте соответствующий файл пула (/etc/php/7.0/fpm/pool.d/site1.conf)
    [site1]
    user = site1
    group = site1
    listen = /run/php/site1.sock
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0666
    pm = ondemand
    pm.max_children = 5
    pm.process_idle_timeout = 10s
    pm.max_requests = 200
    chdir = /

    Каждый сайт работает от своего пользователя linux. Файлы сайта site1 лежат в /home/site1/web
    P.S.
    А зачем Вам Apache вместе с php-fpm ? о_о
    Ответ написан
    3 комментария
  • Оптимальная конфигурация для сервера?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если вопрос поставлен таким образом - то current stable, то есть PHP 7.2 и MariaDB 10.2.
    Главное - убедиться, что ваш код работает с ними как положено.
    Ответ написан
    Комментировать