Задать вопрос
  • Contact Form 7 - как отслеживать какой пользователь отправил форму?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Но проблема в том что форму заполняет сразу несколько человек и сложно идентифицировать какой человек проходит этапы.

    Номер телефона или почта указывается пользователем?

    да единожны на первой форме

    Достаточно не простая задача, т.к. необходимо реализовать множество этапов по связке этапов с конкретным пользователем, особенно, на бэке. Если коротко, то:
    1. Форма должна слать куку пользователя, чтобы бэк мог понимать, кто перед ним.
    2. Бэк должен понимать, кто шлет ему форму, чтобы связать разные этапы.
    Ответ написан
    Комментировать
  • Как сделать такой эффект?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Но это все текст с кучей отдельных элементов. Неужели каждый элемент вручную с помощью % нужно высчитывать и рисовать?

    - Svg, с расположением каждой части в нужном месте, например: d: path("M 1072.8 952.661 V 336.358").
    - Каждый элемент svg имеет свой id (например: id="path12523-5"), к которому можно обратиться из css/js.
    - Для каждого разрешения дисплея - отдельный svg, но со старыми id.
    - JS передает логику по id элементов в svg, не задумываясь, как они там расположены.
    КартинкО

    65cdaf8576d69238951042.png
    Ответ написан
    Комментировать
  • Проверка на конкретный IP адрес?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Вставляем в нужное место записи:
    if ($_SERVER['REMOTE_ADDR'] === '12.223.72.223') {
        echo 'Detected ip 12.223.72.223!';
    }
    Ответ написан
  • Важен ли работодателю тот факт, что сотрудник состоит на нарко. учете?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    трит ли (по вышему опыту) работодатель на данный факт, или ему по барабану?

    Смотрят в основном компании от средних и выше, у которых имеется человек под эту задачу. Помимо этого, могут смотреть судимости, долги, административные производства итп.
    Ответ написан
    Комментировать
  • Как связываются таблицы базы данных WordPress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Через id:
    - Поле post_author в таблице wp_posts содержит id пользователя, который является автором поста.
    - Поле user_id в таблице wp_usermeta содержит id пользователя, которому принадлежат метаданные.
    - Поле comment_post_ID в таблице wp_comments содержит id поста, к которому относится комментарий.

    Через промежуточные таблицы:
    - Таблица wp_term_relationships связывает записи с категориями и тегами.
    - Таблица wp_postmeta хранит метаданные для записей и других объектов.

    Например, связь между постом и его автором:
    - Поле post_author в таблице wp_posts содержит id пользователя, который является автором поста.
    - id пользователя можно использовать для поиска записи в таблице wp_users, чтобы получить информацию о нем.

    phpmyadmin:
    - Ограничения внешнего ключа отображаются только для связей, реализованных с помощью внешних ключей.
    - Другие связи можно увидеть, используя другие инструменты, например, плагин Adminer.
    Ответ написан
    5 комментариев
  • Бан в Google Play. Можно ли перезалить приложение изменив часть кода?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Подсанкционные организации постоянно публикуют свои приложения под другими наименованиями. Не думаю, что они постоянно изменяют не менее 30% кода...
    Ответ написан
    2 комментария
  • Как сделать aspect-ratio на основе переменных?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Реализуемо это на css?

    Да (на css3):
    :root {
        --w: 300px;
        --h: 200px;
    }
    
    // variant one
    
    div {
        width: var(--w);
        height: var(--h);
    }
    
    div::before {
        content: "";
        display: block;
        padding-top: calc(var(--h) / var(--w) * 100vh);
    }
    
    // variant two 
    
    div::before {
        content: '';
        display: block;
        width: var(--w);
        padding-top: calc((var(--h) / var(--w)) * 100%);
    }
    Ответ написан
    1 комментарий
  • Как через wpcf7mailsent добавить класс к одному попапу, а не всем, в которых данная форма?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Если одна и та же форма вызывается в попапах на странице несколько раз, то как обратиться к родителю конкретной форме, т.к. this не работает?

    У анонимных функций в js нет своего this, соответственно берется this из скоупа выше.
    Но так, естественно, новый класс прикрепляется ко всем попапам.

    Можно попробовать искать ближайшего родителя с css классом modal-body (т.е. настоящей формы, где сработало событие wpcf7submit):
    document.addEventListener('wpcf7submit', (e) => {
        if ('123' === e.detail.contactFormId) {
            const form = e.target;
            const modalBody = form.closest('.modal-body');
    
            if(modalBody) {
                modalBody.classList.add('thanks-this');
            }
            else {
                console.log('Творится какая то дичь!');
            }
        }
    });
    Ответ написан
    Комментировать
  • Как прописать пограничный случай в коде?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    def has_char(string, char):
        i = 0
        while i < len(string):
            if char == string[i].lower():
                return True
            if char == string[i].upper():
                return True
            i += 1
        return False
    
    print(has_char('Hello', 'h'))  # True
    print(has_char('Hello', 'H'))  # True
    print(has_char('Hello', 'ё'))  # False, ;)

    Сравнение char с string[i] без учета регистра?
    def has_char(string, char):
        for i in range(len(string)):
            if char == string[i]:
            # if char.lower() == string[i].lower():
                return True
        return False
    
    print(has_char("Привет", "п"))  # True? False!

    И да, в Вашем случае, for будет лучше while, т.к. цикл не предполагает неопределенное количество итераций, читается лучше, да и сами проверки можно упростить:
    def has_char(string, char):
      for _char in string:
        if _char.lower() == char.lower():
          return True
      return False
    
    print(has_char('Hello', 'h'))  # True
    print(has_char('Hello', 'H'))  # True
    print(has_char('Hello', 'ё'))  # False, ;)
    Ответ написан
    1 комментарий
  • Как нажать кнопку на сайте пика через селениум?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как нажать кнопку на сайте пика через селениум?

    4.6. Locating Elements by Class Name

    Вместо By.CLASS_NAME (можно передать лишь 1 наименование класса), используйте By.CSS_SELECTOR (можно передать любой селектор):
    # pahe = driver.find_element(By.CLASS_NAME, 'sc-gsnTZi fWJuXR').click()
    pahe = driver.find_element(By.CSS_SELECTOR, '.sc-gsnTZi.fWJuXR').click()


    И, если есть минутка - на скок понял это проверка сертификатов - как это поправить можно? (куда посмотреть)
    [8468:12460:0214/095050.752:ERROR:ssl_client_socket_impl.cc(974)] handshake failed; returned -1, SSL error code 1, net_error -101
    [8468:12460:0214/095050.866:ERROR:ssl_client_socket_impl.cc(974)] handshake failed; returned -1, SSL error code 1, net_error -101

    Проблемы с ssl соединением (handshake failed).
    Ответ написан
    Комментировать
  • Как вывести картинки?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    в папке images в папке проекта

    А папка images в яйце, а яйцо в другой папке. Предположу, что речь идет про папку images, которая находится в корне проекта, тогда обычно указывается относительный путь:
    <img src="/images/img.jpg" alt="" width="100px" height="100px"/>
    
    // or
    
    import Image from 'next/image';
    <Image src="/images/img.jpg" alt="" width={100} height={100}/>
    Ответ написан
  • Может ли работодатель запретить сотрудникам использовать личные пк?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Ст. 72 ТК РФ. Если коротко, то работодатель вправе устанавливать правила выполнения трудовых обязанностей работника в трудовом договоре (и любых допниках), при условие, если они не противоречат законам РФ.
    Кто как регламентировал такие моменты?

    Выполнение трудовых обязанностей работником происходит с использованием инструментов, определенными работодателем в должностной инструкции.

    https://www.9111.ru/questions/11162198/
    https://journal.tinkoff.ru/ask/taina/
    Ответ написан
    3 комментария
  • Какой есть онлайн-сервис, делающий css код кроссбраузерным?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    С натяжкой, можно сказать, что он старается сделать css код более кроссбраузерным + в онлайн варианте: Autoprefixer CSS
    Ответ написан
    Комментировать
  • Как сделать скрин отрывка в Selenium Python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Сохраняем скрин всей страницы, затем вырезаем нужное из этого скрина:
    $ pip install --upgrade webdriver-manager
    $ pip install Pillow

    from selenium import webdriver
    from selenium.webdriver.edge.service import Service
    from PIL import Image
    from webdriver_manager.microsoft import EdgeChromiumDriverManager
    
    driver = webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()))
    driver.get("https://pillow.readthedocs.io/en/stable/installation.html")
    path = "full.png"
    driver.save_screenshot(path)
    driver.quit()
    
    x = 100
    y = 100
    w = 500
    h = 300
    
    image = Image.open(path)
    cropped = image.crop((x, y, x+w, y+h))
    cropped.save("crop.png")

    КартинкО

    65cc62a645be7633087189.png
    65cc62ac23be7654822496.png
    65cc62b0ef884076037417.png

    Но обычно отправляют сразу изображение капчи (оно обычно в html в style как base64 вставлено), ничего не вырезая.
    Ответ написан
    2 комментария
  • Почему обычно React не рендерят прямо в body?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему мы не можем в React рендерить прямо в body?

    Не знаю, почему Вы не можете. createRoot().
    Ответ написан
  • Как загружать навбар?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Встал следующий вопрос - как реализовать подгрузку меню сайта (навбара), чтобы в случае необходимости (например нужно будеть добавить пункты меню для сайта) не пришлось переписывать все страницы сайта, а изменить только сам навбар, который все страницы сайта уже самостоятельно подгрузят себе.

    Фактически, 3 варианта:
    1. Динамическая подгрузка пунктов меню, через js. В таком случае, не нужны сборщики, но SEO данного блока будет так себе.
    2. Использование сборщика проектов, например, Webpack + шаблонизатор (EJS или Handlebars).
    3. Использование сборщика проектов, например, Webpack + React/Vue.
    Ответ написан
    4 комментария
  • Как из админки запустить php-скрипт по клику?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Я бы использовал плагин, с личной админкой и кнопкой на панели меню:
    /*
    Plugin Name: Супер плагин
    Description: Невероятный плагин, взламывает пентагон по клику!
    Version: 0.1
    Author: Михаил Р.
    */
    
    function super_plugin_menu() {
        add_menu_page('Супер плагин', 'Супер плагин', 'manage_options', 'custom-php-executor', 'super_plugin');
    }
    
    function super_plugin() {
        if(isset($_POST['custom_php_code'])) {
            $code = stripslashes($_POST['custom_php_code']);
            update_option('super_plugin_custom_code', $code);
        } else {
            $code = get_option('super_plugin_custom_code', '');
        }
    
        ?>
        <div class="wrap">
            <h2>Супер плагин</h2>
            <form method="post">
                <textarea
                    name="custom_php_code"
                    style="width:100%;height:200px;"
                ><?php echo htmlspecialchars($code); ?></textarea>
                <input type="submit" value="Выполнить, как следует!" class="button button-primary">
            </form>
        </div>
    
        <?php
        if(!empty($code)) {
            eval($code);
        }
    }
    
    add_action('admin_menu', 'super_plugin_menu');

    КартинкО

    65ca1aaf1a6e2384036131.png
    65ca1ab6114ec549148365.png
    65ca1abcca92b540993230.png
    65ca1ac2ceaff186880778.png
    Ответ написан
    2 комментария
  • Contact Form 7 как сделать автоматический переход между полями?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Поля формы ограничены по количеству символов

    Т.к. надо угадать, что такое "ограничены по количеству символов", то предположу, что речь о length input.

    Подключить скрипт на сайт, и при необходимости, подкорректировать селектор полей формы:
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.wpcf7-form input[type="text"], .wpcf7-form textarea');
    
        elements.forEach((el, i) => {
            const maxLength = parseInt(el.getAttribute('maxlength'), 10);
    
            el.addEventListener('input', () => {
                const length = el.value.length;
                if (length >= maxLength) {
                    if (i + 1 < elements.length) {
                        elements[i + 1].focus();
                    }
                }
            });
        });
    });
    Ответ написан
    Комментировать
  • Contact Form 7 как запретить ввод пробелов?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Подключить скрипт на сайт, и при необходимости, подкорректировать селектор полей формы:
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.wpcf7-form input[type="text"], .wpcf7-form textarea');
    
        elements.forEach((el) => {
            el.addEventListener('input', (e) => {
                e.target.value = e.target.value.replace(/\s+/g, '');
            });
        });
    });

    UPD из комментов, ограничение на ввод в input только цифр (необходимо указать css класс такому input only-numbers):
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.only-numbers');
    
        elements.forEach((el) => {
            el.addEventListener('input', (e) => {
                e.target.value = e.target.value.replace(/\D/g, '');
            });
        });
    });
    Ответ написан
    3 комментария
  • Как должен выглядеть location подмены картинок?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно заюзать алиасы:
    # /resize/422346/asjdhy37772jssh_500x500.webp > /home/bitrix/ext_www/images/resize/422346/asjdhy37772jssh_500x500.webp
    location /resize/ {
       alias /home/bitrix/ext_www/images/resize/;
    }

    А вообще, желательно проверять логи nginx по ~адресу /var/log/nginx/error.log.
    Ответ написан