Задать вопрос
  • Как передать переменную в фильтр the_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    Проверил ваш код, получаю на выходе: sorry, but no.
    и ошибки:
    5c4f1ef9cd072426447011.png

    но я уже решил по своему, у меня без ошибок, так что спасибо за беспокойство
  • Как передать переменную в фильтр the_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    Вы можете написать готовый пример, так как документацию я прочитал уже не один раз, но у меня не получается передать переменную.

    Передать можно не переменную, можно alt, можно class - это не важно, главное передать.

    Я не понимаю фразу "внутренние переменные плагина", для меня слово плагин, ассоциируется с понятием, когда я некий код записываю в отдельный файл и помещаю в папку plugins.
  • Как передать переменную в фильтр the_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    Так тоже не получается передать переменную.

    Попробовал передать массивом, тоже не получилось, страница отображается, но данные не передаются:
    the_post_thumbnail(array('page' => 'slider'));

    и в functions.php
    function multi_format_thumbnail( $html, $attr = array() ){
    $page = $attr['page'];
    ..
  • Как передать переменную в фильтр the_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    А можно на пальцах объяснить, а то не очень понял Вашу фразу.

    В документации на the_post_thumbnail написано, что можно передавать $attr в виде строки или массива, но когда пишу вызов:
    the_post_thumbnail($attr='page=slider');

    а в фильтре:
    function multi_format_thumbnail( $html , $attr){
    ...

    то ничего не работает.
  • Как добавить свою форму в меню wordpress?

    Tolly
    @Tolly Автор вопроса
    Я же не телепат, хоть намек дайте )

    Ума хватило, придумать - создать произвольный пункт в меню, в котором задать класс add_menu.

    wp_nav_menu( array(
       ...
       'walker'  => new form_walker()
    ));
    и далее вставить код в functions.php
    class form_walker extends Walker_Nav_Menu {
      function start_el(&$output, $item,  $depth = 0, $args = array(), $id = 0 ) {
    		global $wp_query;
    		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
    		$output .= $item->description;
    
    		$class_names = $value = '';
    
    		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
    
    		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
    		$class_names = ' class="'. esc_attr( $class_names ) . '"';
    
    		$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';
    
    		$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
    		$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
    		$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
    		$attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
    
    		$item_output = $args->before;
    		if (in_array('add_menu', $classes)) {
    			$item_output .= '
    			<form role="search" method="get" class="flex" action="form.php" >
    						<input type="search" class="search_field_menu" placeholder="Поиск по сайту" required autocomplete="off" value="" />
    						<button type="submit" class="search_submit_menu" value="найти"></button>
    					</form>';
    		} else {
    			$item_output .= '<a'. $attributes .'>';
    			$item_output .= $args->link_before .apply_filters( 'the_title', $item->title, $item->ID );
    			$item_output .= '</a>';
    		}
    		$item_output .= $args->after;
    
    		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
      }
    }


    Форма в меню появилась...
    Это вариант?
  • Как растянуть картинку во всю высоту блока?

    Tolly
    @Tolly Автор вопроса
    Все понял, нашел ответ в Интернете, еще раз спасибо.
  • Как растянуть картинку во всю высоту блока?

    Tolly
    @Tolly Автор вопроса
    Да так работает, а можете пояснить команду
    .swiper-slide {
    	height: auto!important;
    }

    Теория не нужна, я просто не понимаю, почему в данном случае вопрос решается именно так, вроде же никто не перебивает высоту?!
  • Как из URL получить название файла?

    Tolly
    @Tolly Автор вопроса
    Извините, не правильно написал $b, мне надо:
    $b=123, т.е. имя файла без _multi.jpg
  • Как добавить свою форму в меню wordpress?

    Tolly
    @Tolly Автор вопроса
    Почитал/посмотрел, но ничего интересного по walker не нашел, кроме как удаление/добавление классов, id и атрибутов.

    Можете написать пример того, как я могу добавить кастомный пункт в меню через walker?
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    Вашу логику понял, для одного пользователя:
    chmod root:nginx -R 750 /var/www/
    find /var/www/ -type d -name tmp -o -name uploads -o -name sessions -exec chmod root:nginx -R 770 {} \;
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    1. Про параметр:
    php_value[open_basedir] = /var/www/example.com/:/tmp/:/var/www/mysite.com/

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

    2. По фразе "тем самым пользователь www-data - или другой, но не nginx, который не имеет прав доступа к этой папке",
    я имел ввиду, что запуск php-fpm идет от пользователя www-data, так как он не имеет никаких прав. Вместо него можно создать и прописать любого пользователя, кроме nginx. Например можно прописать пользователя tolly или vasya, но не nginx.

    php-fpm же получает доступ только для чтения, так как входить в группу

    к примеру для папки /var/www/mysite/ - владелец - пользователь nginx (полный доступ) и группа mysite (только чтение), а остальным все запрещено

    Я верно думаю?

    PS. Ну и думаю, что можно прописать 770 для например временных файлов, сессий, uploads и так далее?
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    А в пуле можно прописывать несколько хостов? Типа:

    [HOST=example.com]
    open_basedir /var/www/example.com/:/tmp/
    upload_tmp_dir /var/www/example.com/temp/
    sys_temp_dir /var/www/example.com/temp/
    session.save_path /var/www/example.com/sessions/

    [HOST=mysite.com]
    open_basedir /var/www/mysite.com/:/tmp/
    upload_tmp_dir /var/www/mysite.com/temp/
    sys_temp_dir /var/www/mysite.com/temp/
    session.save_path /var/www/mysite.com/sessions/

    или это делается, просто путем перечисления все возможных путей, типа:
    php_value[open_basedir] = /var/www/example.com/:/tmp/:/var/www/mysite.com/ ?

    Немного запутался в пользователях и группах, к примеру
    ; Имя пула
    [mysite]
    
    ; Пользователь и группа
    user = www-data
    group = mysite
    
    ; Прием FastCGI-запросов
    listen = /var/run/mysite.sock
    
    ; Пользователь и группа, который будет владельцем unix сокета
    listen.owner = nginx
    listen.group = nginx
    
    ; Права на чтение и запись
    listen.mode = 0660


    Вот что я понял:
    1) [mysite] - это имя пула mysite по аналогии с доменом
    2) user = www-data - это некто, не важно кто, но не nginx
    3) group = mysite - группа созданная для домена
    4) listen = /var/run/mysite.sock - имя сокета от имени домена
    5) listen.owner = nginx и listen.group = nginx - запуск самого php-fpm
    верно?

    Имея 2 домена: example и mysite, задаем права:
    chmod nginx:mysite -R 750 /var/www/mysite/
    chmod nginx:example -R 750 /var/www/example/

    тем самым пользователь www-data - или другой, но не nginx, который не имеет прав доступа к этой папке

    Все правильно понял?
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    Виктор Таран, "затем что есть проекты в которых это очевидно важно, а так же есть ресурсы следить за всем вместе", еще раз повторю, что оно работать не будет не на одном проекте, так как так делать нельзя!
    К сожалению не вспомню урлы, где читал этот бред.
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    В Nginx попробовал изменить путь, для каждого сайта прописал (домен заменен на фейковый):
    location ~ \.php$ {
            try_files $uri =444;
            fastcgi_pass backend7;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     
            fastcgi_param PHP_VALUE open_basedir="/var/www/mysite.ru/:/tmp/";
            fastcgi_param PHP_VALUE upload_tmp_dir="/var/www/mysite.ru/tmp/";
            fastcgi_param PHP_VALUE sys_temp_dir="/var/www/mysite.ru/tmp/";
            fastcgi_param PHP_VALUE session.save_path="/var/www/mysite.ru/sessions/";
    
            include fastcgi_params;
    }


    Но почему-то настройка применилась только для session.save_path, а для остальных осталась дефолтной. Проверял phpinfo(), сейчас - "no value", т.к. не прописана в php.ini.

    Как изменить пул в php-fpm, добавив новых пользователей?
    Сейчас /etc/php7/pool/pool.conf имеет вид:
    ; Имя пула
    [php7]
    
    ; Пользователь и группа
    user = nginx
    group = nginx
    
    ; Прием FastCGI-запросов
    listen = /var/run/php7-fpm.sock
    
    ; Пользователь и группа от чьего имени запущен сервер
    listen.owner = nginx
    listen.group = nginx
    
    ; Права на чтение и запись
    listen.mode = 0660


    В php-fpm.conf прописана строка:
    include=/etc/php7/pool/*.conf

    Будет ли достаточно создать новый файл /etc/php7/pool/vasya.conf
    и прописать:
    [vasya]
    user = vasya
    listen = /var/run/php7-fpm.vasya.sock


    А потом для того, чтобы работать от этого юзера, достаточно прописать строку в конфиг домена, типа:
    fastcgi_pass unix:/var/run/php7-fpm.vasya.sock;

    так?
  • Можно ли организовать учёт трафика ютуб для групп пользователей средстами Mikrotik?

    Ну.. вот у меня есть скрипт, который блокирует рекламу (некоторые сайты), можете его доделать, указать только домены youtube и правило блокировки заменить, на правило пропуска, т.е. трафик идти будет, но он будет считаться в байтах и в пакетах.
    Экзотику по поводу, сколько раз заходили на сайт, реализуйте сами, там надо через proxy настраивать, на борту он есть, но я не пользовался.

    /ip firewall layer7-protocol
    add name=Block_URL regexp="^.+(apps.skype.com|ads.viber.com|googleads.g.doubleclick.net|googleapis.l.google.com|\
    |an.yandex.ru|ads.youtube.com).*\$"\
    comment="Blocklist URL baners"
    
    /ip firewall mangle 
    add action=mark-connection protocol=udp dst-port=53 \
    chain=prerouting connection-mark=no-mark layer7-protocol=Block_URL new-connection-mark=Block_URL passthrough=yes 
    
    add action=mark-packet \
    chain=prerouting connection-mark=Block_URL new-packet-mark=Block_URL passthrough=no
    
    /ip firewall filter 
    add action=drop chain=forward packet-mark=Block_URL comment="Block URL baners"
    add action=drop chain=input packet-mark=Block_URL comment="Block URL baners"


    PS. Правила файрвола должны быть в самом верху! Перезагрузите компьютеры и роутер, чтобы сбросить dns везде, а то не заработает.
  • Какой путь прописать для upload_tmp_dir?

    Tolly
    @Tolly Автор вопроса
    Ввести пару команд для обновления (системы, ядра, пхп), как бы не проблематично, скрипт все делает легко и быстро.
    По вопросу понял, закрываю его.

    PS. Зачем же пишут эти статьи по безопасности?
  • Как сделать, завершение bash скрипта, если другая программа уже запущена?

    Tolly
    @Tolly Автор вопроса
    а смысл переписывать мой вопрос? у меня точно такой же скрипт

    кроме того, мне не помогает выйти даже exit
  • Яндекс (pdd.yandex.ru) перешел на API2?

    Tolly
    @Tolly Автор вопроса
    там априори нельзя менять ip-адрес, функционала у яндекса нет
    хотя может уже сделали, я уже давно не пользуюсь pdd, взял у провайдера статический ip..