Задать вопрос
  • Как сделать скролл при нажатие на катогорию товаров в мобильной версии сайта на Wordpress Woocommerce?

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

    1. Прикрутить id к элементу, до которого необходима прокрутка, например <div id="test">products...</div>.
    2. Ссылке указать якорь с id этого элемента, например <a href="#test">Ссылко</a>.
    3. Жмякнуть по ссылке.
    Ответ написан
  • При добавлении в корзину и изменении количества - зависает Куда копать?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Куда копать?

    - Браузер > Инструменты разраба > Консоль.
    - Изменяем количество в корзине > ловим ошибку в консоли (wc_cart_fragments_params не объявлен).
    - Крайний /wp-content/themes/garden/js/minicart.js, строка 20.
    Ответ написан
    4 комментария
  • Есть Route но они не совмем так работают как нужно?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    https://www.robinwieruch.de/react-router-nested-routes
    https://www.positronx.io/react-js-nested-routes-us...
    import {BrowserRouter as Router, Routes, Route, Navigate} from 'react-router-dom';
    
    function App() {
      const {getUser, user, setUser} = useUser();
    
      return (
        <Router>
          <Routes>
            <Route path="/" element={<LoginForm user={user} getUser={getUser}/>}/>
            <Route path="login" element={<LoginForm user={user} getUser={getUser}/>}/>
            <Route path="dashboard/*" element={<PrivateRoute user={user}><DashboardRoutes user={user}/></PrivateRoute>}/>
          </Routes>
        </Router>
      );
    }
    
    export default App;
    
    const DashboardRoutes = ({user}) => (
      <Routes>
        <Route path="/" element={<Dashboard user={user}/>}/>
        <Route path="acts" element={<ActsPage user={user}/>}/>
      </Routes>
    );
    
    const PrivateRoute = ({user, children}) => {
      if(localStorage.getItem('token')) {
        return children;
      }
      return <Navigate to="/login"/>;
    }

    В DashboardRoutes() можно добавлять вложенные роуты.
    Ответ написан
    5 комментариев
  • Как выбрать монитор для программиста?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Flicker Free.
    - Вместо IPS > VA матрицу (посмотрите глазами на оба, сразу поймете в чем разница).
    - Не менее 24 дюймов (желательно больше, чтобы был именно широким) и разрешение 2/4к.
    Из вашего личного опыта, при работе к какими мониторами у вас напрягались глаза, а с какими нет?

    Если свет вокруг монитора будет аналогичен яркости монитора, то глаза гораздо неменьше напрягаются.
    Ответ написан
    Комментировать
  • Библиотека UI компонентов для (HTML/CSS/JS) + ReactJS?

    Mike_Ro
    @Mike_Ro Автор вопроса
    Python, JS, WordPress, SEO, Bots, Adversting
    Как и предполагалось, не удалось найти "серебряную пулю", соответственно, для обоих были выбраны разные инструменты, исходят из факта популярности, количества готовых компонентов и наборов в фигме:
    https://getbootstrap.com/
    https://mui.com/
    Ответ написан
    Комментировать
  • Как вывести свой блок со ссылкой в цикле Wordpress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть цикл который выводит блоки со ссылками внутри

    code

    <?php 
      $layout         = $settings['layout'];
      $prod_categories = get_terms( 'product_cat', $catargs );
      foreach ( $prod_categories as $key => $prod_cat ):
      $counter++;
      $bgc++;
      $cat_thumb_id = get_term_meta( $prod_cat->term_id, 'thumbnail_id', true );
      $cat_thumb = wp_get_attachment_image( $cat_thumb_id, $image_size );
      $term_link = get_term_link( $prod_cat, 'product_cat' );
      $thumbnails = $cat_thumb;
      ?>
      <div class="<?php echo esc_attr( $collumval ); ?>">
    
        <?php if( '1' === $layout ): ?>
        <div class="1"></div>
        <?php elseif( '3' === $layout ):?>
            <a>ссылка</a>
          
        <?php endif; ?>
    
      </div>
      <?php
      if( $bgc == 4 ){ $bgc = 0; }
      if( $counter == $limitcount ) { break; }
    endforeach;


    А кто писал этот код? Мне просто интересно...

    Слегка переделал:
    $layout = $settings['layout'];
    $prod_categories = get_terms('product_cat', $catargs);
    
    foreach ($prod_categories as $key => $prod_cat) {
        $counter++;
        $bgc++;
        $cat_thumb_id = get_term_meta($prod_cat->term_id, 'thumbnail_id', true);
        $cat_thumb = wp_get_attachment_image($cat_thumb_id, $image_size);
        $term_link = get_term_link($prod_cat, 'product_cat');
    
        echo '<div class="' . esc_attr($collumval) . '">';
    
        switch ($layout) {
            case '1':
                echo '<div class="1"></div>';
                break;
            case '3':
                echo '<a href="' . esc_url($term_link) . '">ссылка</a>';
                break;
        }
    
        echo '</div>';
    
        if ($bgc == 4) {
            $bgc = 0;
        }
    
        if ($counter == $limitcount) {
            break;
        }
    }
    
    if ('3' === $layout) {
        echo '<div class="3"><a href="#">test</a></div>';
    }
    Ответ написан
    Комментировать
  • Как называеться данное направление SWE? Что нужно для него учить?

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

    "Разработка системного программного обеспечения" или "low-level programming" или "system software development".
    Ответ написан
    Комментировать
  • Где учить нейросети python?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Где учить нейросети python?

    Может, кто-нибудь подскажет как изучить это с полного нуля до уровня специалиста?

    Бесплатная книга Deep Learning от Йошуа Бенджио, Иэна Гудфеллоу и Аарона Курвилля.
    Ответ написан
    2 комментария
  • Где почитать про то как настроить SSR в React Typescript приложении?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Начинаем от сюда: https://habr.com/ru/articles/527310/
    Затем впитываем один из следующих вариантов, на вкус:
    https://nextjs.org/docs/pages/building-your-applic...
    https://vitejs.dev/guide/ssr.html
    Ответ написан
    Комментировать
  • Как сделать чтобы меню на сайте wordpress, в мобильной версии не уходило в бургер?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    На сайте https://opendag.ru при открытии мобильной версии главное меню сайта уходит в бургер.

    Не уходит (это 2 разных меню). В мобильной версии элемент .primary-navigation-wrap имеет стандартную видимость, а вот элемент горизонтального меню nav.site-navigation - скрыт, и наоборот в десктопной версии.

    https://opendag.ru/wp-content/themes/gucherry-blog...:

    Вернуть меню в мобильной версии, строка 15141, заменить:
    .site-navigation {
        display:none;
        margin-top: 10px;
        padding: 0
    }

    На:
    .site-navigation {
        /* display:none; */
        margin-top: 10px;
        padding: 0
    }


    Убрать бургер-меню в мобильной версии, строка 15137, заменить:
    .menu-toggle {
        display: block
    }

    На:
    .menu-toggle {
        /* display: block; */
    }

    Предположу, что css подключается в https://opendag.ru/wp-content/themes/gucherry-blog..., соответственно, для принудительного сброса кэша - необходимо изменить версию файла с main-style.css?ver=6.1.1 на main-style.css?ver=6.1.2:
    function theme_enqueue_styles() {
        wp_enqueue_style('custom-style', get_template_directory_uri() . '/assets/dist/css/main-style.css', array(), '6.1.2');
    }
    
    add_action('wp_enqueue_scripts', 'theme_enqueue_styles');

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

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

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

    Замечал еще моменты, когда Метрика не обновляла страницу из своего кэша после ее изменения. Предположительно, либо это баг, либо Метрика посчитала, что визуальные изменения не значительны для обновления кэша. Я изменил идентификатор у css и js на другой - и о чудо, через несколько часов, визиты пошли уже с обновленной страницы.
    Ответ написан
    1 комментарий
  • Законно ли создание фанатских игр без монетизации?

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

    Зависит от лицензионного соглашения потенциального потерпевшего, если там все запрещено, то:
    - Статья 7.12 КоАП РФ и статья 146 УК РФ (нарушение авторских и смежных прав).
    - Статья 1250 ГК РФ (защита интеллектуальных прав).
    и насколько велик шанс под них попасть?

    Зависит от умственных способностей и настойчивости потерпевшего.
    А если в самой игре указывать всех авторов используемого контента?

    Зависит от лицензионного соглашения.
    но чет стремно на штраф влететь…

    Так можно сорвать джекпот, пока будите сидеть - штраф уже перестанет казаться стремным ;)
    Ответ написан
    4 комментария
  • Что делать если нет платежного плагина от банка, для WooCommerce?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    но у банка нету специального плагина для WooCommerce

    Какие есть варианты, кроме написания своего плагина? Может есть что то готовое?

    Чтобы прям напрямую в нужный Вам банк залетали платежи - такого нет, понадобится какой то сторонний интернет-эквайринг (агрегатор), который: предоставит необходимую интеграцию с WС > примет платеж > переведет деньги в Ваш банк.
    Ответ написан
    1 комментарий
  • Могу ли я выставить лицензию MIT в проекте, который использует библиотеку с лицензией Apache 2.0?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Да.

    https://www.apache.org/licenses/LICENSE-2.0
    2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

    4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

    You must give any other recipients of the Work or Derivative Works a copy of this License; and
    You must cause any modified files to carry prominent notices stating that You changed the files; and
    You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
    If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
    You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
    Ответ написан
    1 комментарий
  • Как сделать event после выбора selected option?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    change вместо click.

    жуквери:
    $('#USERS').change(function(e) {
        alert($(this).val());
    });

    vanilla:
    document.querySelector('#USERS').addEventListener('change', (e) => alert(e.target.value));
    Ответ написан
    2 комментария
  • Как в исходные файлы реакта попадает переменная __DEV__?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Переменная __DEV__ в исходных кодах React используется для определения режима сборки: разработка или продакшн. Это позволяет добавлять или исключать определенный код в зависимости от режима, что может быть полезно для добавления дополнительных предупреждений, проверок и другого кода, который полезен только во время разработки.

    На практике __DEV__ не определяется непосредственно в исходных файлах React. Вместо этого, она обычно заменяется на этапе сборки с помощью инструментов, таких как Webpack или Babel.

    Вот как это обычно работает:

    1. В исходном коде React, вы можете увидеть конструкции вроде:
    if (__DEV__) {
      console.warn('Some warning message');
    }

    2. Когда React собирается для режима разработки, __DEV__ заменяется на true, а для режима продакшн - на false.

    3. Инструменты сборки, такие как UglifyJS или Terser, затем оптимизируют этот код, удаляя условные блоки, которые никогда не выполняются. Например, если __DEV__ заменяется на false, то весь блок if (__DEV__) { ... } будет удален при минификации.

    Для того чтобы замена __DEV__ работала, вы обычно настраиваете ваш инструмент сборки (например, Webpack) с помощью плагинов, таких как DefinePlugin для Webpack, который заменяет определенные токены в исходном коде на заданные значения.

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

    На правах копипаста, самому в лом писать...
    Ответ написан
    1 комментарий
  • Как правильно настроить htaccess под ПС?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    У меня есть сайт, на котором появляются товары, под каждый товар создаётся страница.

    Правильно.
    Через определенное время, этот товар может быть удалён, а поисковый робот эту страницу уже просканирует и при повторном посещении в Вебмастере и в Гугл Консоли будут ошибки о несуществующих страницах.

    Как правильно настроить этот момент для SEO, чтобы не было проблем с поисковой оптимизацией ?

    Если Вы планируете позже продолжить продавать товар, то не удаляйте страницу. У Вас проиндексированная страница на которую было затрачено определенное количество времени на рост в ПС, а Вы ее удаляете... Пометьте товар "временно закончился, скоро появится" и предложите уведомить посетителя о возобновление продаж, таким образом Вы:
    - Сохраните поисковый трафик на эту страницу.
    - Есть определенный шанс, что пришедшие на эту страницу посетители - купят другой товар в Вашем магазине.
    - Есть определенный шанс заполучить контактные данные посетителя (уведомление о поступление товара в продажу), а затем попробовать продать ему уже другой товар.

    Если же, Вы не собираетесь возобновлять продажи товара, то никакие редиректы на 404 страницу делать не нужно, необходимо сразу отдавать удобную страницу с 404 кодом ответа. Под "удобной" я понимаю такую страницу, которая позволит человеку найти другой похожий товар и решить его задачу в рамках этой страницы, без лишних кликов.
    Ответ написан
    Комментировать
  • Как создать пункт меню и страницу в админке Wordpres через плагин?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Создаем плагин, wp-content/plugins/best-plugin/best-plugin.php:
    <?php
    /**
     * Plugin Name: Чумовой плагин
     * Description: Это плагин, твердо и четко!
     */
    
    if(!defined('ABSPATH')) {
      exit;
    }
    
    class Best_Plugin {
      protected $menu_slug = 'best-plugin';
    
      public function __construct() {
        // добавление страницы с пунктом меню
        add_action('admin_menu', [$this, 'add_admin_page']);
    
        // добавление ссылки на настройки плагина в списке плагинов
        add_filter(
          'plugin_action_links_' . plugin_basename(__FILE__),
          [$this, 'add_settings_link']
        );
      }
    
      // страница, любое содержимое страницы, обычно это винегрет из html/js/php
      public function add_page() {}
    
      // добавление страницы с пунктом меню
      public function add_admin_page() {
        add_options_page(
          'Страница чумового плагина',
          'Чумовой плагин',
          'manage_options',
          $this->menu_slug,
          [$this, 'add_page'],
          1
        );
      }
    
      // добавление ссылки на настройки в списке плагинов
      public function add_settings_link($links) {
        $settings_link = "<a href=\"options-general.php?page={$this->menu_slug}\">Настройки чумового плагина</a>";
        array_unshift($links, $settings_link);
        return $links;
      }
    }
    
    new Best_Plugin();
    Ответ написан
    Комментировать
  • Как в PM2 задать автоматическую перезагрузку python скрипта при ошибке?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    https://pm2.io/docs/runtime/features/restart-strat...
    https://pm2.keymetrics.io/docs/usage/pm2-doc-singl...

    $ pm2 start app.py --name "app-name" --interpreter python3 --restart-delay 1000 --max-restarts 10
    $ pm2 save
    $ pm2 startup
    Ответ написан
    Комментировать